Git reset 연습하기

froajnzd·2023년 9월 23일
0

git

목록 보기
4/6

version 0

Create a new repository on the command line
echo "# gitRevertPractice" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:kyeongseo90/gitRevertPractice.git
git push -u origin main

version 1

버전 0에서 develop 내용 변경
git add .
git commit -m 'version 1'
git push

version 2

issue를 하나 생성해서 1Feature branch를 생성함

New line 작성

이후 커밋

version 3

1Feature 브랜치에서 1.1Feature 브랜치로 분기한다

Line 내용 변경

커밋(git push만 했을 경우 remote에 브랜치가 안만들어져서 --set-upstream origin 1.1Feature 옵션으로 다시 시도)

reset

이제 브랜치는 세개(develop, 1Feature, 1.1Feature)가 있다.
여기서 1Feature을 version 0로 복구시키고 싶을 때, reset을 통해 복구해보고자 한다

git checkout 1Feature

로그는 위과 같다.
hard 옵션으로 version 0으로 돌아가고자 한다.

reset한 이후

  • develop branch
  • 1Feature branch
  • 1.1Feature branch

1Feature 브랜치만 성공적으로 reset되었다.

Reset과 Revert의 차이

Reset 명령은 커밋 히스토리를 깔끔하게 유지할 수 있고, 혼자 작업 시 편하게 되돌아갈 수 있다는 장점이 있다.
그러나, 다른 이들과 같은 브랜치에서 함께 작업할 때 커밋이 뒤섞여버릴 수 있다는 단점이 있다.

Revert 명령은 히스토리에 남게 되어 왜 돌아갔는지 등의 기록을 남길 수 있고, 다른 이들과 협업 시 코드 충돌을 최소화할 수 있다.

Reset, Revert 사용 방법

Reset

git reset --soft [commit ID] 
git reset --mixed [commit ID]
git reset --hard [commit ID]
git reset HEAD~10 
git reset HEAD^

soft : commit 된 파일들을 staging area로 되돌려 놓는 옵션(commit 하기 전 상태로)

mixed : 옵션을 붙이지 않는다면 기본으로 설정됩니다. commit 된 파일들을 working directory로 돌려놓는 옵션(add 하기 전 상태로)

hard : commit 된 파일들 중 tracked 파일들을 working directory에서 삭제(untracked 파일은 계속해서 untracked 상태로 남음)

HEAD_취소할 커밋의 개수 : 현재로부터 원하는 만큼의 commit이 취소

HEAD^ : 가장 최근의 commit이 취소(기본 옵션 mixed)

Revert

git revert [commit ID]

돌아가고자 하는 commit ID를 적어 사용한다.
명령어를 실행하면, edit 창이 떠서 변경 사항을 변경하고 새로운 커밋을 만든다.

profile
Hi I'm 열쯔엉

0개의 댓글