깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기)
Revert는 commit된 파일을 취소하고, 기록을 남긴다.
Reset은 해당 commit의 위치로 이동하고 기록도 날린다.
두 명령어를 이용해 과거 commit으로 돌아가보자.
Revert
GitHub Desktop에서는 History 탭에서 특정 커밋을 Revert하는 것만 가능하다.
정상적으로 revert 된다면(충돌이 없다면) Push origin으로 반영한다.
해당 코드의 변경 사항을 보고 싶다면 Revert "main commit test"에서 commit을 취소하면(Undo commit...) 된다.
최신 commit 2개를 revert하면 아래와 같이 History에 2개의 로그가 남게 된다.
만약 차례대로 revert 하지 않으면 아래와 같이 conflict 경고가 나타날 수 있다.
이 경우는 Changes에서 충돌된 코드를 처리하면 된다.
연속 Revert
만약 commit을 10개 이전으로 돌리고 싶다면, 매번 revert하는 것이 번거롭다.
이 경우에는 Git Bash에서 처리한다.
main commit test ~ main commit은 revert 하였으므로,
commit에서 ver 1.0을 revert하자.
commit 해시와 ver 1.0 해시가 필요하다.
git revert [되돌아갈 hash]..[시작할 hash]로 revert 한다.
$ git revert c348768c..1fe4c6aa
[main d756441a] Revert "commit"
5 files changed, 1 insertions(+), 1 deletions(-)
[main a893741c] Revert "ver 4.0"
5 files changed, 5 insertions(+), 5 deletions(-)
[main 8a7f6592] Revert "ver 3.0"
2 files changed, 2 insertions(+), 2 deletions(-)
[main a6326f77] Revert "ver 2.0"
1 file changed, 1 insertion(+), 1 deletion(-)
아래와 같은 로그가 나오면 :wq!로 닫아주면 된다.
원하는 만큼 revert가 되었다.
참고로 ver 1.0 hash에 의해 바로 앞인 ver 2.0까지의 revert임을 의미한다.
Reset
git reset은 특정 버전으로 되돌아간다.
그리고 revert와 달리 History에 기록을 남기지 않는다. (사실 자체를 없애버린다.)
마찬가지로 깃헙 데스크탑에서는 reset을 제공하지 않기 때문에 Git Bash에서 처리한다.
연속 revert와 마찬가지로 git reset [commit hash]를 하면 바로 앞 까지 reset된다.
그리고 History에서 기록이 사라진다.
ver 1.0 = c348768c인 hash로 reset 해보자.
$ git reset c348768c
아래와 같이 Pull origin(revert 된 commit)으로 변경되고, History에서 그동안 작업한 로그가 사라진 것을 알 수 있다.
여기까지는 로컬이고 그대로 서버(깃헙)에 모두 반영하려면 강제로 반영해야 한다.
데스크탑에서 강제 반영 기능이 없으므로, Git Bash에서 git push origin +main으로 반영한다.
(이 명령어는 되돌릴 수 없으므로 신중하게 해야 한다.)
$ git push origin +main
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/substrawberry/git_project.git
+ a6326f77...c348768c main -> main (forced update)
이제 GitHub에 들어가 프로젝트의 로그를 확인해보자.
ver 1.0 앞의 커밋이 모두 사라진 것을 알 수 있다.
특정 파일만 되돌리는 기능도 Git Bash에서만 사용 가능하다.
'개발 > Git, GitHub' 카테고리의 다른 글
Git Bash - 이분 탐색으로 버그 발생한 commit 찾기 (0) | 2022.07.31 |
---|---|
Git Bash - 특정 파일 하나만 되돌리기 (Revert One Specific File) (0) | 2022.07.30 |
깃허브 데스크탑 - 커맨드 창을 Git Bash로 변경하기 (Change Command Prompt to Git Bash) (0) | 2022.07.29 |
Git Bash - 일부 파일만 스테이시로 감추기 (Git Stash Some Specific File) (0) | 2022.07.28 |
깃허브 데스크탑 - 일부 파일만 스테이시로 감추기 (Git Stash Some Specific Files) (0) | 2022.07.28 |
댓글