대표이지미 하나 넣기
목차
reset
,revert
소개reset
사용해보기revert
사용해보기
reset
, revert
소개
reset
은 히스토리를 남기지 않고 되돌릴때 사용합니다. 팀원들에게 영향을 줄 수 있어 협의 후 진행해야 됩니다. 혼자 사용할 때 사용하는 것을 추천합니다.revert
는 히스토리를 남기고 되돌립니다. 팀 프로젝트시 소스 관리가 가능합니다
reset
/revert
사용해보기
reset
/revert
시 Commit ID가 필요하니 git log명령어로 Commit ID를 확인해보겠습니다.
우선 git log로 Commit ID 확인하기
Commit ID
를 확인해 보겠습니다.
git log --oneline
가장 최근에 commit 한 부분을 날리고, 두번째 커밋을 기준으로 소스를 유지하고 하려고 합니다.
소스를 유지할 두번째 Commit ID
인 3096f69
를 확인하면 되겠죠!
(HEAD -> master, master/master) 의 의미가 멀까요??
git log 명령어에 대해서 알고 싶으면 아래 링크를 확인해보세요~
tistory 링크 - 깃 Git log 확인하기 - HEAD, origin, master
옵시디언 링크 - 깃 Git log 확인하기 - HEAD, origin, master
reset 사용해보기
Commit ID
넣어서 reset 해주겠습니다.
git reset --hard <Commit ID>
git reset --hard <Commit ID>
: repository, staging area, working directory를지 되돌립니다
git reset [--mixed] <Commit Id>
: repository, staging area를 되돌립니다
git reset --soft <Commit ID>
: repository를 되돌립니다
hard, mixed, soft의 차이는 깃 로컬 저장소 중에서 어느 영역까지 되돌릴 것인지 지정하는 옵션입니다. 참고로 따로 입력하지 않으면 기본값은 --mixed 입니다.
repository, staging area, working directory의 차이가 몰까요?
tistory 링크 - 깃 Git 로컬 저장소 reset - repository, staging area, working directory
옵시디언 링크 - 깃 Git 로컬 저장소 reset - repository, staging area, working directory
- 그리고 다시 로그를 확인해보면 reset한 Commit ID가 최종 커밋으로 되어 있습니다.
- 마지막으로 push 하여 동기화를 시켜줍니다.
git push -f origin master
push의 origin과 master가 몰까요??
git push -f <원격저장소명> <원격저장소 브랜치명>
push의 -f는 몰까요??
tistory 링크 - 깃 Git Push 알아보기
옵시디언 링크 - 깃 Git Push 알아보기
역시
원격저장소명
과원격저장소 브랜치명
이 master로 동일하니까 헷갈리네요…
저장소 이름을 바꿔야겠습니다!
tistory 링크 - 깃 Git orgin 이름 변경하기 - git remote rename
옵시디언 링크 - 깃 Git orgin 이름 변경하기 - git remote rename
- 최종 로그 확인해 보겠습니다.
revert
사용해보기
commit 시점에 해당하는 파일만 되돌립니다.
reset처럼 commit 시점 이후의 파일을 모두 되돌리지 않습니다.
-
C에서 A로 revert한다고 가정해 보겠습니다.
이렇게 되면 B와 C의 변경내역이 사라지는게 아닙니다. 커밋 A에 해당하는 변경점만 되돌려 집니다. -
B와 C의 변경내역을 되돌리고 A로 가고 싶으면 revert를 2번 해주어야합니다.
먼저 C에서 B로 되돌리고, 그 다음 B’에서 A로 되돌려야합니다. -
우선 테스트를 위해 파일을 생성하고 push, 파일을 수정하고 또 push해서 commit 히스토리를 2개 만들어 두겠습니다.(
add new file
,edit file
)
-
이제
9c0e068
(Revert point)로 revert를 진행해보겠습니다.
git revert <commit id>
revert가 진행되면 커밋 메세지를 입력하고, revert change 리스트를 확인할 수 있도록 화면에 표시됩니다.
커밋 메세지를 입력 방법은 qw
를 누르면 작성모드로 변경되어 commit 메세지 작성할 수 있습니다. 가장 첫번째 노란색에 커밋 메세지를 작성합니다. (“Revert Success”)
그리고 ESC
누른 후 :wq
입력하여 빠져나오면 완료입니다.
-
revert 완료입니다.
-
push를 하고 다시 로그를 보겠습니다.
-
git commit 히스토리를 보겠습니다.
왼쪽은 파일 2개 수정, 파일 1개 삭제된 커밋 내용입니다.
오른쪽은 revert로 왼쪽의 수정된 파일2개와 삭제된 파일1개를 되돌려 복구 시킨 것을 볼 수 있습니다.
하지만 중간 Commit된 파일이 생성되고, 수정 내역은 그대로 유지 됩니다.
마치며
이번 포스팅에서는 reset과 revert에 대해 알아 보았습니다. 매번 reset과 revert에 명확히 인지 하지 못하고 있었는데 이번 기회에 좀 더 명확하게 이해하는 계기가 된 것 같습니다.
특히 몇 번을 테스트를 해봄으로써 예상했던 결과가 실제로 다르다는 걸 깨달았습니다.
revert가 그 경우인데 해당 Commit Id로 revert를 하면 그 사이에 있는 변경점(Commit)들도 히스토리를 남기고 되돌려 지는줄 알았는데, 알고 보니 해당 Commit Id의 변경만 되돌려지는 것이었습니다.
프로젝트 중에 팀원 중 한 분이 reset인가, revert를 한 적이 있습니다. 아마 reset인 것 같네요.
소스를 reset한지 모르고 작업해서 push를 했는데, 나중에 보니 제가 개발한 부분이 없어져서 당황한 기억이 있습니다.
아마 reset시점이 제가 pull받은 시점보다 이전이라서, reset하신 분이 push할 때 마다 제가 push한 부분이 없어졌던 것 같습니다.
결국엔 로컬 브랜치를 삭제 후, 새로 pull 받아서 작업했었는데, reset할 때는 팀원들과 공유해서 신중하게 진행해야 할 것 같아요!~
'도구 > Git' 카테고리의 다른 글
깃 Git 원격 저장소 브랜치 덮어 씌우기 (0) | 2023.10.27 |
---|---|
깃 Git Push 알아보기 (0) | 2023.10.21 |
깃 Git 로컬 저장소 reset - repository, staging area, working directory (1) | 2023.10.18 |
깃 Git orgin 이름 변경하기 - git remote rename (0) | 2023.10.16 |
깃 Git log 확인하기 - HEAD, origin, master (0) | 2023.10.15 |