Git
[중앙정보처리학원] git* restore, reset, revert 활용하기
해보구
2024. 3. 6. 16:54
반응형
앞서
우선 Detached Head 란 무엇일까?
간단히 말해 커밋에 직접적으로 checkout 을 한 상태이다. <git checkout 해쉬코드> 로 한다.
git checkout HEAD~1
위 코드에서 숫자 1은 부모 커밋을 말한다. 숫자 2가 된다면 부모의 부모 커밋을 가리킨다. HEAD코드를 Reset 등에도 같이 사용 가능하다.
Detached Head 상태에서 고려 할 수 있는 작업들.
- 단순히 이전 커밋 내역 둘러보기: 그냥 헤드를 분리시킨 상태로 이전 커밋의 파일들을 둘러볼 수 있다. 그리고 원래 브랜치로 돌아가 분리된 헤드를 다시 결합한다.
- 새 브랜치 생성: git switch -c <new-branch> 명령을 사용하여 현재 커밋을 기반으로 새 브랜치를 생성할 수 있다. 이를 통해 Detached HEAD 상태에서 만든 변경사항을 새 브랜치에 저장하고 참조할 수 있다. 보통 이전 커밋에서 새로운 작업을 시도해보고 싶을 때 사용함.
- 작업 내역 저장 후 체크아웃: git stash를 사용하여 변경사항을 저장한 다음, 원하는 브랜치로 체크아웃할 수 있다. 이후에 해당 변경사항을 다시 로드하여 작업을 계속한다.
다음 명령어들
git restore filename
Restore
지정된 파일의 변경사항을 HEAD의 상태로 되돌린다. undo 와 비슷하다고 보면 된다. 하지만 커밋 이전에 사용해야 하며, 되돌린다음엔
돌아갈 수 없다.
git restore --source 커밋해쉬코드 파일이름
git restore --source branchName fileName
이 코드는 지정된 앞에 상태로 뒤에 것을 복원한다고 생각 하면 된다. 되돌릴 수 없는 명령어라서 꼭 작업내용을 백업하거나 신중해야한다.
git restore --staged
변경사항은 유지하되 add 이후의 상태만 이전으로 돌린다!
Reset
git reset 해쉬코드
현재 HEAD를 특정 커밋으로 이동시키는데에 사용된다. 되돌리는 경우에 사용된다. 하지만 되돌릴경우 그 커밋이후의 모든 커밋이 사라지기 때문에 주의 해야한다. 이외 --soft, --mixed, --hard 와 같은 명령어를 코드또는 HEAD~이전에 붙일 수 있지만 아무것도 안붙이면
자동적으로 --mixed 가 된다.
git reset --hard <<<< 커밋취소, 변경사항폐기
git reset --soft <<<< 커밋취소, 변경사항유지
git reset --mixed <<<< 커밋취소, 변경사항유지, add 풀림, 주로 사용됨
git reset --hard ORIG_HEAD << reset을 잘못했을 때 취소 하는 명령어
git reset HEAD~숫자 => git switch -c 생성할 브랜치이름
reset은 통상 개인작업에서, revert는 공동작업에서 쓰인다.
revert란?
특정 커밋을 취소하지만 기록은 유지하면서 새로운 커밋을 만드는 형식이라 안정성이 있다.
git revert 해쉬코드
반응형