Git에서 프로젝트를 과거로 되돌리는 방법은 두 가지 방법이 있다.
1) Reset
말 그대로 시간을 과거로 되돌리는 것이다. 원하는 시점으로 돌아간 뒤에 이후 내역들을 삭제한다.
예를 들어 Add George to Tigers로 돌아간다면, 최근의 두 버전이 삭제되는 것이다.
Replace Cheetas with Panthers
Add team Cheetas
Add George to Tigers
Replace Lions with Leopards
FIRST COMMIT
<reset 사용해서 과거로 돌아가기>
혹시 모르니까
실험을 진행하기전 .git 파일을 따로 복사해둬서 다시 원점으로 돌아갈 수 있게 하자.
자 reset으로 과거로 돌아가보자!
아래의 명령어로 커밋 내역을 확인한다.
git log
되돌아갈 시점인 Add tem Cheetas의 커밋 해시를 복사함
git reset --hard 559755163a8c4e6c9e74eab3a7e63b7aa5b5b0e5
reset의 옵션중 하나인 --hard는 이후에 다시 공부하자.
559755163a8c4e6c9e74eab3a7e63b7aa5b5b0e5 모두 복사해도되고, 앞의 6~7글자만 복사해도 된다.
Panthers가 삭제되었고, 파일의 내용도 과거로 돌아간 모습을 확인할 수 있다.
FIRST COMMIT으로 돌아간 모습!
백업해뒀던 .git 파일을 다시 git-practice에 복사하고, git reset --hard 명령어를 사용해서 원점으로 돌아와보자.
git reset --hard
헉 돌아왔다. 개신기해
2) Revert
Revert는 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다. 따라서 결과적으로 아래와 같이 되면, Add team Cheetas로 돌아가게된다.
-Replace Cheetas with Panthers
Replace Cheetas with Panthers
Add team Cheetas
Add George to Tigers
Replace Lions with Leopards
FIRST COMMIT
<Revert로 과거의 커밋 되돌리기>
만약 Add George to Tigers의 커밋해시를 구해보자.
아래의 명령어로 Revert 진행!
git revert (되돌린 커밋의 해시)
Revert를 완료한 모습이고, 소스트리로 확인해본 결과 아래와 같다.
그런데 만약에 Replace Lions with Leopards로 돌아가고자 한다면.. 어떻게 될까? 이것은 약간의 문제가 있다.
일단 다짜고짜 시도해보자
그럼 Bash는 add를 하던 rm을 하던지 해서 revert를 다시 진행해라고 힌트를 준다.
그래서 우리는 remove를 진행해보자.
git rm leopards.yaml
git revert --continue
위의 명령어를 진행한 결과 아래처럼 최종적으로 Revert할 수 있다.
reset으로 다시 돌아가자~
<커밋하지 않고 revert하기>
git revert --no-commit (되돌릴 커밋 해시)
원하는 다른 작업을 추가한 다음 함께 커밋하고자 할 때 진행한다.
이후에 협업시 한 번 공유공간에 올라간 내역을 reset해버리면 그걸 기반으로 작업한 다른 사람들의 코드와 심각한 충돌을 일으킨다. 따라서 한 번 공유가 된 커밋들은 Revert를 통해 되돌려야 한다!
'출입금지!! 개인공부방 > Git' 카테고리의 다른 글
(git) branch를 합치는 방법(merge, rebase) (0) | 2023.08.02 |
---|---|
(git) branch 만들어보기 (0) | 2023.08.02 |
(git) 프로젝트 변경사항을 버전에 담기 (0) | 2023.08.02 |
.gitignore 사용 방법 (0) | 2023.08.01 |
Git 최초 설정 및 관리 시작하기 (0) | 2023.08.01 |