오늘은 커밋한 버전을 유지하면서, 과거로 되돌리는 Git Revert을 정리하려고 하는데요.
SourceTree에서 사용하는 쉬운방법을 보도록 하겠습니다.
1. UI에서 Reverse Commit
1-1. 직전단계로 Reverse
SourceTree의 커밋리스트에서 우측마우스버튼을 클릭하여 컨텍스트 메뉴를 보이도록 하면,
아래와 같이 reverse commit을 찾을 수 있습니다.
그럼 아래와 같이 확인창이 뜨고, OK를 눌러줍니다.
아래와 같이, Revert"돌아갈 커밋" 으로 Commit이 된 것을 볼 수 있습니다.
1-2. 전전전단계로 Revert
전단계로 Revert 하는것 까지는 매우 쉽게 느껴지실텐데요.
전전전다계로 좀더 앞으로 가고 싶을 경우가 조금 어려울 수 있습니다.
한번에 원하는 단계로 점프하는 것이 아니라, Conflict를 방지하기 위해, 역순으로 Revert를 해 주어야 하는데요.
커밋을 했었던 역순으로 Reverse Commit을 클릭해주어야 겠지요.
바로 전단계는 Revert가 되었으니, 이번에는 이 전단계에서 Reverse Commit 을 선택해 줍니다.
여기서 어디에다 Revert를 해 주어야 할지 고민이 되실 수 있는데요.
Revert"Revert된 커밋 메시지" 내용을 보시고, 바로 그 전에다가 reverse Commit을 걸어주십니다.
예를들어서 아래와 같은 순으로 커밋이 되어있다고 가정해 보겠습니다.
- C
- B
- A
이제 C에서 우측마우스 클릭으로 Revert를 선택하고 컨펌을 해 주면, 아래와 같이 바뀌게 됩니다.
- Revert "C"
- C
- B
- A
이 상태에서 B에다 Reverse Commit을 걸어주시면 되는 것 이지요.
복잡하게 생각하지 말고, Revert"Commit내용"을 보시고, 바로 그전에다 reverse Commit을 걸어주시기만 하면 됩니다.
6. Reset 그리고 Discard
6-1. Reset vs Revert
기존의 작업을 삭제하는 방법은 Reset과 Discard가 있습니다.
이미 Stage에 올려서 Commit을 하였다면,
Reset을 통해서 기존 커밋을 삭제할 수 있습니다.
사용방법도 같습니다. 우측마우스버튼을 통해서 Context메뉴를 열어서, Reset을 선택해 주기만 하면 됩니다.
위에서 정리한 Revert를 하면 기존 커밋이 남은 상태에서 이전의 상태로 되돌릴 수 있었는데요.
Reset은 그대로 날라가버리는 개념이지요.
이 Reset에는 3가지 모드가 있는데요.
다만, 원격 Repository에 이미 push가 된 상태이면 Reset을 하기는 어렵습니다.
아래와 같이 Reset master to this commit을 클릭할수 없는 것을 볼 수 있습니다.
6-2. Discard
아직 Commit을 않하고 Stage에 올렸거나 올리지 않았다면,
Discard를 통해서도 기존 작업을 삭제할 수 있습니다.
Stage에 올라가있다면, 내려서 Unstaged상태로 만들구요.
SourceTree의 "..."아이콘을 누른다음, Discard file을 선택해 주면 됩니다.
7. 정리
Git을 하면서 Revert를 할일은 언젠가는 발생하게 되는데요.
천천히 단계를 밟아가면서 하면 전혀 어려울 것이 없는 작업입니다.
변경되거나 더 좋은 방법이 있다면 이 글을 통해서 업데이트하도록 하겠습니다.
'Git, BitBucket, SourceTree' 카테고리의 다른 글
Git 사용방법 총정리 하기 # github branch stash (5) | 2024.09.13 |
---|---|
Mac 키체인 Access 토큰 비밀번호 업데이트 # Github Bitbucket KeyChain (0) | 2022.10.15 |
Github 에서 발급하는 Personal Access Token (0) | 2022.10.13 |
Bitbucket App Passwords 이슈 해결 # Account Sourcetree (0) | 2022.09.18 |
기존 프로젝트를 Bitbucket과 SourceTree로 올려보자 (0) | 2020.10.17 |
Git 명령어 중 자주 사용하는 것들 모음 (0) | 2020.04.10 |
SourceTree에서 Branch 생성과 병합(Merge) 그리고 충돌(Conflict) 해결 정리 (1) | 2018.09.17 |
git-quick-stats 로 보는 다양한 Git 통계 (0) | 2017.04.05 |
SourceTree 에서 수정하는 gitignore (0) | 2017.04.03 |
댓글