source

되돌린 Git 커밋을 "반환"하려면 어떻게 해야 합니까?

myloves 2023. 4. 13. 21:26

되돌린 Git 커밋을 "반환"하려면 어떻게 해야 합니까?

사용하여 commit 을 사용해서 .revert돌리는가 은은?? 법??? ????

이상적으로는 이력을 다시 쓰지 않도록 새로운 커밋을 사용하여 이 작업을 수행해야 합니다.

git cherry-pick <original commit sha>
커밋의 을 다시 합니다.

복귀를 되돌리면 같은 처리가 이루어지며 더 복잡한 커밋메시지가 표시됩니다.
git revert <commit sha of the revert>

중 어느 쪽이든 할 수 .git push이력을 덮어쓰지 않습니다.복귀 후 새로운 커밋이 작성되기 때문입니다.
sha를 처음 합니다.commit sha는 5자 또는 6자만 합니다.
git cherry-pick 6bfabc

그 , if yet that if if면면면면면면면면면면 if if if if if if.git reset --hard HEAD^

그렇지 않으면 되돌리는 것은 문제 없습니다.

은 '하다'입니다.git checkout HEAD^^ -- . 다음에 또 한 번.git add -A && git commit.

복귀 커밋은 git 내의 다른 커밋과 동일합니다.즉, 다음과 같이 되돌릴 수 있습니다.

git revert 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746

이는 변경을 푸시한 후에 특히 타깃 브랜치를 강제적으로 푸시할 수 없는 경우에만 의미가 있습니다(마스터 브랜치에서는 이것이 좋은 아이디어입니다).변경이 푸시되지 않은 경우 다른 투고와 같이 체리픽, 되돌리기 또는 되돌리기 커밋을 삭제하기만 하면 됩니다.

저희 팀에는 메인 브랜치에서 커밋된 Revert 커밋에 대한 Revert를 사용하는 규칙이 있습니다.주로 이력을 깨끗하게 유지하기 위해 어떤 커밋이 무엇을 되돌리는지를 확인할 수 있습니다.

     7963f4b2a9d    Revert "Revert "OD-9033 parallel reporting configuration"
     "This reverts commit a0e5e86d3b66cf206ae98a9c989f649eeba7965f.
                    ...
     a0e5e86d3b6    Revert "OD-9055 paralel reporting configuration"
     This reverts commit 648d7d808bc1bca6dbf72d93bf3da7c65a9bd746.
                ...
     Merge pull request parallel_reporting_dbs to master* commit 
    '648d7d808bc1bca6dbf72d93bf3da7c65a9bd746'

이렇게 하면 역사를 추적하고 모든 이야기를 알아낼 수 있고, 유산에 대해 모르는 사람도 스스로 해결할 수 있다.한편, 체리픽이나 베이스의 변경을 실시하면, 이 귀중한 정보는 없어집니다(코멘트에 포함하지 않는 한).

확실히, 만약 약속이 한 번 이상 되돌아왔다가 다시 되돌아왔다 하면 그것은 꽤 지저분해진다.

원래대로 되돌리면 효과가 있습니다.

예를들면,

ifabcdef의 커밋과 「」입니다.ghijkl입니다.abcdef , , , , , ㄹ 수 있다 ㄹ 수 있다.

git revert ghijkl

그러면 되돌아가게 됩니다.

을 사용하다
「」의 my_branchname원래대로 되돌린 합병에 포함되었습니다. And I wanted to unrevert 그리고 나는 되돌리고 싶었다.my_branchname : : :

I first do a 저는 처음에git checkout -b my_new_branchname부에서my_branchname.
Then I do a 그리고 나서 저는git reset --soft $COMMIT_HASH어 어디 있죠?$COMMIT_HASH첫 번째 커밋 직전 커밋 해시입니다.my_branchname (see (을 참조).git log)
나서 나는 을 한다.git commit -m "Add back reverted changes"
새 올립니다.git push origin new_branchname
그리고 새로운 지점에 대한 당김 요청을 했습니다.

실수로 되돌린 경우:

git revert <commit-id>

실행하기만 하면 됩니다.

git cherry-pick <commit-id>

이 명령어를 사용하여 처리하도록 변경을 커밋해야 했습니다.

다음을 실행하여 커밋 ID를 얻을 수 있습니다.

git log --pretty=format:"%h - %an, %ar : %s"

만약 당신이 "복귀"라는 아이디어를 좋아하지 않는다면(특히 그것이 많은 커밋에 대한 이력 정보를 잃는 것을 의미할 때), 당신은 언제든지 "불량한 병합을 되돌리기"에 대한 git 문서를 참조할 수 있습니다.

다음과 같은 시작 상황이 주어진 경우

 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E   <-- fixed-up topic branch

(W는 머지 M의 초기 복귀입니다.D와 E는 처음에 망가진 기능의 브랜치/커밋에 대한 수정입니다.)

이제 단순히 커밋 A부터E까지를 재생하여 반환된 머지에 "속"하지 않도록 할 수 있습니다.

$ git checkout E
$ git rebase --no-ff P

으로, 는, 「마지」에 될 수 .master 추가:

   A'---B'---C'------------D'---E'  <-- recreated topic branch
  /
 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E

'아예'를 쓰셔도 됩니다.git checkout -b <new-branch> ★★★★★★★★★★★★★★★★★」git cherry-pick <commit>의 이전과 에의git rebaserevert.끌어당기다

커밋 후 반환된 스테이징되지 않은 변경 및 스테이징된 변경을 되돌리려면 다음 절차를 따릅니다.

git reset HEAD@{1}

삭제되지 않은 모든 삭제를 복구하려면:

git ls-files -d | xargs git checkout --

누군가가 제 브랜치로 마스터로 되돌리는 문제가 있었습니다만, 저는 그것을 다시 결합할 필요가 있었습니다만, 문제는 되돌리기에 커밋이 모두 포함되어 있다는 것입니다.M1에서 기능 브런치를 만들고 M3에서 기능 브런치를 Marge한 후 RM3으로 되돌립니다.

M1 -> M2 -> M3 -> M4- > RM3 -> M5
 \.         /
  F1->F2 -

어떻게 하면 F2를 M5에 통합할 수 있을까요?

git checkout master
git checkout -b brach-before-revert
git reset --hard M4
git checkout master
git checkout -b new-feature-branch
git reset --hard M1 
git merge --squash brach-before-revert

모든 파일을 실수로 삭제한 후 다음 방법을 사용하여 데이터를 복구했습니다.

git reset HEAD@{1}         
git fsck --lost-found      
git show 
git revert <sha that deleted the files>

가 나오더라고요.git reset --hard HEAD 옵션이기 때문에 .--hard. 인덱스와 리모트레포는 리셋되지만 대부분 로컬레포도 리셋되고 아직 리모트로 푸시되지 않은 모든 커밋은 로컬레포와 인덱스 양쪽에서 손실됩니다. 플래그를 .--hard잘못했을 실행해 주세요.git refloggit reset --hard ~hash파일을 복구합니다.

제 경우, 원래 커밋을 실패 없이 선택하기 위해서는 되돌린 후 변경을 커밋해야 했습니다.

git commit -m "Make changes (original commit)."
git revert <original commit hash>
git commit -m "Revert original commit."
git cherry-pick <original commit hash>

언급URL : https://stackoverflow.com/questions/8728093/how-do-i-un-revert-a-reverted-git-commit