[TIL / Git] 커밋 되돌리기
reset 이용
- 헤드 브랜치를 특정 시점으로 되돌리려면 해당 커밋을 우클릭 ⇒ 이 커밋까지 현재 브랜치를 초기화 ⇒ hard를 선택한다.
- push해놓지 않았다면 이전 커밋은 사라진다.
- 터미널에서
git reset --hard
명령으로 사용할 수 있다.
강제 push
- reset에 의해 작업 파일이 origin과 달라지면 push와 pull이 동시에 활성화된다. → push하면 에러가 발생하기 때문에 강제 push를 진행해야 한다.
- 소스트리에서는 강제 push를 지원하지 않기 때문에 터미널에서
push --force
명령으로 사용해야 한다.
- origin과 병합을 시도해서 충돌을 먼저 일으키고 내 것을 선택해서 해결하면 정상적인 push가 가능하다.
장단점
장점
단점
브랜치 이용
- 되돌릴 커밋에 브랜치룰 생성하여 작업한다.
- 작업이 완료되면 반드시 master에 merge한다.
장단점
장점
단점
revert 이용
- 되돌릴 커밋을 우클릭 ⇒ 커밋 되돌리기를 선택하면 대상 커밋의 내용을 되돌린 새로운 커밋이 생성된다.
- 다시 복구하고 싶으면 체크아웃이나 리셋을 하면 된다.
- 여러 커밋을 되돌리려면 최신부터 순서대로 revert를 반복 적용하면 된다.
- 예를 들어 순서대로 commit1, commit2, commit3가 있다.
- commit3를 revert한 이후에 commit 3와 revert "commit 3"는 없는 셈 치면 된다.
- 따라서 commit2를 똑같이 revert해주면 commit1으로 되돌아갈 수 있다.
장단점
장점
- 커밋이 사라지지 않는다.
- 가장 정석적인 방법이다.
단점
P.S.
✍️ 지금의 나로서는 브랜치를 이용해 안전하게 작업하는 것이 가장 적절하겠다는 생각이 든다. 물론 협업을 하기 시작하면 트리의 가시성을 높이기 위한 고민이 필요할 것 같다🤓
Reference