Git에서 병합 커밋 되돌리기

Abdul Jabbar 2023년1월30일
  1. 푸시되지 않은 Git 커밋 되돌리기
  2. 이미 푸시된 Git 커밋 되돌리기
Git에서 병합 커밋 되돌리기

때로는 두 개 이상의 브랜치를 병합한 다음 커밋을 원하는 브랜치로 푸시해야 합니다. 그러나 우리는 그 저장소에서 병합이 필요하지 않다는 것을 깨달았습니다. 그래서 여기서 문제는 이미 푸시된 병합 커밋을 취소하거나 되돌리는 방법입니다. 걱정할 것이 없습니다. Git은 아래에서 논의되는 이 문제에 대한 훌륭한 솔루션을 가지고 있습니다.

문제에 따라 이 상황을 처리하는 두 가지 방법이 있습니다. 하나는 아직 저장소에 푸시되지 않았지만 커밋되었다는 것입니다. 다른 하나는 커밋되어 저장소에 둘 다 푸시된다는 것입니다. 두 상황 모두 아래에서 논의되었습니다.

푸시되지 않은 Git 커밋 되돌리기

Git에서 커밋을 직접 되돌리는 것은 불가능합니다. 그럼에도 불구하고 커밋을 되돌리기 전에 확인해야 합니다. 되돌린 후, 이제 작업 디렉토리의 위치는 커밋을 푸시하기 전의 작업 디렉토리의 위치와 동일합니다.

이제 git reset 명령을 적용하여 인덱스 포인터를 제자리로 다시 이동할 수 있습니다. 커밋 전의 위치. 예를 들어 Commit1Commite3 커밋의 변경 사항을 유지하고 Commit2 커밋의 변경 사항을 되돌리려면 이 명령을 실행합니다.

git reset HEAD~3

이 명령은 Commit2 커밋 이전 위치에 대한 인덱스 포인터를 반환합니다. 커밋을 되돌린 후 변경된 파일을 작업 디렉토리에 다시 추가해야 합니다. 예를 들어 다음 명령을 실행합니다.

git checkout Commit1 
git add Commit1  
git checkout Commit3 
git add Commit3
git commit

그런 다음 Commit1Commit3 커밋을 원격 저장소로 푸시할 수 있습니다.

git push

두 개의 분기를 병합한 다음 분기의 변경 사항을 되돌리려면 다음 명령을 사용할 수 있습니다.

git merge --abort

이 명령은 병합 프로세스를 취소하는 데 사용됩니다. 그런 다음 변경 사항을 분기로 되돌릴 수 있습니다. 이 섹션에서 논의된 명령은 마지막 커밋 또는 여러 커밋의 효과를 취소하려는 경우에 유용합니다.

그러나 마지막 두 개 이상의 커밋의 효과를 취소하려면 작업 디렉터리를 마지막 커밋 이전 상태로 재설정해야 합니다. 하나 이상의 커밋을 직접 되돌리는 것이 불가능하기 때문입니다.

이미 푸시된 Git 커밋 되돌리기

다른 경우에는 병합 커밋을 원격 브랜치에 이미 푸시하고 그것도 푸시했다면 변경 사항을 되돌리는 새 커밋을 만들어야 합니다. 우리는 다음 명령을 실행할 것입니다:

git revert -m 1 <merge-commit-hash>

이것은 이전 병합 커밋의 변경 사항을 되돌릴 새 커밋을 개발합니다. 그러나 이 새 커밋에는 원래 병합 커밋의 모든 변경 사항도 포함되므로 되돌리기 커밋임을 나타내도록 커밋 메시지를 편집해야 합니다. 우리가 언급한 옵션인 반면 -m 1은 병합된 분기를 유지하기를 원한다고 Git에 알립니다.

되돌리기 명령은 작업 트리를 변경하지 않습니다. 인덱스만 수정합니다. revert 명령에는 커밋의 원래 메시지를 복원하는 옵션도 있습니다. 위의 예에서 -m 옵션은 커밋의 원본 메시지를 복원하는 데 사용됩니다. revert 명령을 사용하여 통합 커밋에서 특정 파일을 복원할 수도 있습니다.

Git 되돌리기는 변경 사항을 적용하고 더 이상 해당 변경 사항을 유지하고 싶지 않다고 결정할 때 로컬 브랜치에서 사용할 수 있는 유용한 도구입니다. 공공 지점에서는 사용하지 않는 것이 좋습니다.

아시다시피 git revert는 순전히 되돌릴 수 있으며 변경 사항을 취소하는 것은 불가능합니다. 분기의 현재 커밋이 아닌 커밋에 대해 git revert를 실행하면 git revert가 새 커밋 ID를 가진 새 커밋을 개발할 것이기 때문에 매우 주의해야 합니다.

나중에 git reset –hard를 실행하여 git revert가 만든 변경 사항을 되돌리면 git revert가 실행 취소하는 커밋을 만든 개발자가 변경한 사항도 제거됩니다. 공개 지점에서 git revert를 사용하는 것이 가능하지만 그렇게 하는 것은 내 의견에 따라 좋은 생각이 아닙니다. 새로운 브랜치를 개발하여 변경하고 완료되면 master 브랜치에 병합하는 것이 좋습니다.

공개 브랜치에서 git revert를 사용하려면 해당 브랜치에서 작업하는 유일한 사람인지 확인하십시오. 그렇지 않으면 다른 사람의 작업을 취소하게 됩니다.

작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Revert

관련 문장 - Git Merge