Git 여러 커밋 되돌리기
이 튜토리얼에서는 Git에서 여러 커밋을 되돌리는 방법에 대해 알아봅니다.
Git에서 우리는 일부 기능 개발을 위해 많은 커밋을 수행했거나 몇 가지 버그 수정을 커밋했을 수 있습니다.
우리는 이제 이 작업을 중단하기로 결정할 수 있습니다. 따라서 이러한 변경이 완료되기 전의 상태로 저장소를 되돌리려면 완료된 여러 커밋을 되돌려야 합니다.
Git에서 여러 커밋을 되돌리기 위해 git revert
명령을 사용할 수 있습니다.
여러 커밋을 되돌리는 또 다른 방법은 git reset
명령을 사용하는 것입니다.
이제 예를 들어 두 가지를 모두 설명하겠습니다.
git revert
를 사용하여 Git에서 여러 커밋 되돌리기
몇 가지 버그 수정을 위해 여러 커밋을 수행했다고 가정합니다.
다음과 같이 Git 로그에서 이러한 커밋을 볼 수 있습니다.
$ git log --oneline
17b787d bug3 fixed
1fefb57 bug2 fixed
8b3560b bug1 fixed
784065c feature1 developed
...
이제 우리는 이러한 버그 수정을 없애고 저장소를 bug1 fixed
상태 이전의 상태로 되돌리기로 결정했습니다.
따라서 --no-commit
옵션과 함께 git revert
명령을 사용할 수 있습니다. 명령 구문은 git revert --no-commit <commit>
입니다.
따라서 완료된 버그 수정의 세 커밋을 되돌리려면 다음과 같이 해야 합니다.
$ git revert --no-commit 17b787d784065c
$ git revert --no-commit 1fefb57
$ git revert --no-commit 8b3560b
따라서 Git의 저장소는 이제 bug1 fixed
를 커밋하기 전의 상태입니다.
각 커밋을 되돌리기 위해 커밋의 sha1
이름을 사용했습니다.
다음과 같이 Git 리포지토리에 작업 트리의 이 상태를 커밋해야 합니다.
$ git commit -m "the fixes for bugs 1 2 3 reverted"
git reset
을 사용하여 Git에서 여러 커밋 되돌리기
저장소에 병합 커밋이 있다고 가정합니다. 그러면 git revert
를 사용하는 위의 솔루션이 작동하지 않습니다.
이러한 경우 git reset
명령을 사용해야 합니다.
따라서 Git에서 git reset
을 사용하여 여러 커밋을 되돌리려면 다음과 같이 해야 합니다.
$ git reset --hard 784065c
$ git reset --soft ORIG_HEAD
$ git commit
따라서 git reset
명령을 사용하여 저장소를 커밋 기록의 첫 번째 버그 수정 직전인 784065c feature1 개발됨
커밋으로 되돌렸습니다.
따라서 이것은 병합 커밋이 있는 경우에도 작동합니다.
관련 문장 - Git Commit
- Git 커밋 사인오프 기능 이해
- Git에서 수정된 커밋 되돌리기
- Git에서 추적되지 않은 파일을 커밋하는 다양한 방법
- Git에서 특정 커밋 수정
- Git에서 현재 커밋 가져오기
- Git의 다른 분기에 현재 변경 사항 커밋