IT story

푸시 된 후 병합 되돌리기

hot-time 2020. 12. 30. 19:17
반응형

푸시 된 후 병합 되돌리기


내가 수행 한 단계 :

나는 branch1과 branch2 두 가지를 가지고 있습니다.

$git branch --Initial state
$branch1

$git checkout branch2
$git pull origin branch1 --Step1

나는 갈등을 해결하고

$git commit -m "Merge resolved"

그때

$git checkout branch1
$git merge branch2
$git push origin branch1

이제 1 단계에서 자동 병합으로 일부 코드가 제거되고 변경 코드가 푸시되었음을 깨달았습니다. 이제 변경 사항을 되돌리기 위해 초기 상태로 돌아가고 싶습니다. 즉각적인 도움을 찾고 있습니까?


공식 가이드에 따라 병합을 되돌릴 수 있지만 병합 된 커밋이 여전히 대상 브랜치에 있다는 잘못된 믿음을 Git에 남깁니다.

기본적으로 다음을 수행해야합니다.

git revert -m 1 (Commit id of the merge commit)

를 사용 git reflog <branch>하여 병합 이전에 분기가 있었던 위치를 찾고 git reset --hard <commit number>이전 개정을 복원하십시오.

Reflog는 분기의 이전 상태를 보여 주므로 원하는 변경 세트로 되돌릴 수 있습니다.

git reset을 사용할 때 올바른 분기에 있는지 확인하십시오.

원격 저장소 기록을 변경하려면을 수행 할 수 git push -f있지만 누군가 사용자가 푸시 한 변경 사항을 이미 다운로드 할 수 있으므로 권장되지 않습니다.


첫 번째 옵션은 git revert.

git revert -m 1 [sha-commit-before-merge]

git revert변경 사항을 되돌리려하지만 역사를 유지합니다. 따라서 병합 된 분기와 기능 분기 간의 실제 차이를 더 이상 볼 수 없으므로 동일한 분기에서 계속 작업 할 수 없습니다. 다음 방법을 사용하여 기록도 제거하십시오. 현재 브랜치에 변경 사항을 적용하는 유일한 사람인 경우에만 매우 신중하게 수행하십시오.

git reset --hard [sha-commit-before-merge]
git push [origin] [branch] --force

참조 URL : https://stackoverflow.com/questions/12534312/revert-a-merge-after-being-pushed

반응형