일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- media query
- max-width
- frontend
- coding
- 그럼에도불구하고
- 코딩테스트
- 자바
- react
- node
- JavaScript
- webpack
- 변수
- Servlet
- CSS
- github
- redux
- 그럼에도 불구하고
- 코드업
- 프론트엔드
- 반응형 페이지
- node.js
- git
- TypeScript
- react-router-dom
- 자바문제풀이
- @media
- JS
- cleancode
- HTML
- java
- Today
- Total
그럼에도 불구하고
[Git, GitHub] 다양한 명령어들에 대해 알아보자 (checkout, restore, reset, revert) 본문
[Git, GitHub] 다양한 명령어들에 대해 알아보자 (checkout, restore, reset, revert)
zenghyun 2023. 7. 13. 20:41
git checkout, git restore, git reset, git revert에 대해 알아보겠습니다.
[ git checkout ]
git checkout <commit-hash>
or
git checkout HEAD~? (1개, 2개, 3개 ~~~ )
내가 입력한 commit hash 시점으로 돌아갈 수 있습니다. ( 돌아가서 확인이 가능하다. )
📌 Detached HEAD
git checkout을 사용하면 Detached HEAD 문구를 볼 수 있는데 두 가지 옵션이 있습니다.
1. 분리된 HEAD에 머물면서 이전 commit의 내용을 확인합니다.
2. 새 branch를 만들고 전환한다. HEAD가 더 이상 분리되지 않으므로 이제 변경 사항을 적용하고 저장할 수 있습니다.
git check commit hash를 하면, 분리된 HEAD로 다시 돌아갑니다. 여기서 내가 확인하고 싶은 것을 확인할 수 있고, switch를 사용해 돌아갈 수 있으며, master 또는 원하는 branch로 돌아갈 수 있습니다. 또는 과거에 commit을 기반으로 하는 새 branch도 만들 수 있습니다.
📌 다시 돌아가고 싶을 때는?
git switch master
git switch -
git switch를 사용하면 내가 가장 최근에 있던 branch로 이동하게 됩니다.
[ git checkout HEAD <file> ]
git checkout HEAD <file> or <file>s
or
git checkout -- <file> or <file>s
파일의 변경 사항을 취소할 수 있는 명령어입니다.
위의 명령어를 사용하면 내가 마지막으로 commit 한 시점의 파일 내용으로 돌아가게 됩니다.
[ git restore ]
git restore는 실행 취소 작업에 도움이 되는 완전히 새로운 git 명령어입니다.
git checkout은 많은 git 사용자가 혼란스러워할 만큼 많은 작업을 수행할 명령을 갖고 있는데, git restore는 checkout의 일부 용도에 대한 대안으로 git switch와 함께 도입되었습니다.
git restore로 할 수 있는 첫 번째 작업은, 저장소의 마지막 commit 이후의 변경 사항을 삭제하는 것입니다.
git restore <file-name>
이 명령어를 사용하면 가장 최근의 commit 이후의 파일로 복원됩니다.
git restore --source HEAD~? <file-name>
해당 file의 내용을 HEAD에서 commit ?개 전에 있던 모습으로 복원합니다.
git restore로 할 수 있는 두 번째 작업은, stage 된 파일을 unstage 하는 것입니다.
git restore --staged <file-name>
예를 들어, git add .를 통해 모든 파일을 stage에 올렸을 때 특정 파일만 unstage 하고 싶으면 이 명령어를 사용하면 됩니다.
[ git reset ]
git reset 명령은 저장소를 특정 commit으로 다시 재설정합니다.
📌 일반 재설정
git reset <commit-hash>
commit 기록만 삭제되고 변경사항은 삭제되지 않습니다. 변경 사항은 여전히 working directory에 남아있습니다.
이 방법은 잘못된 branch에 commit 했을 때 유용합니다. 이 명령어를 실행 후 내가 원하는 branch에 가서 다시 commit 하면 됩니다 :)
📌 강한 재설정
git reset --hard <commit-hash>
이 명령어는 commit과 변경 사항까지 working directory에서 제거시킵니다.
[ git revert ]
git revert <commit-hash>
git revert와 git reset은 변경 사항을 취소한다는 점에서는 같지만, 다른 부분이 있습니다.
revert와 reset 모두 commit에서 변경 사항을 취소하지만, 그렇게 만드는 방법이 다릅니다.
reset은 commit을 완전히 제거하고 branch pointer를 뒤로 이동시키는 반면, revert은 완전히 새로운 commit을 만듭니다.
그리고 그 새로운 commit에서 이전 commit의 변경 사항을 취소합니다.
즉, revert는 commit의 기록은 남겨두지만 변경 사항은 취소하는 것입니다.
🏷️ 예제
'이모저모 > Git, GitHub' 카테고리의 다른 글
[Git, GitHub] Tag에 대하여 알아보자 (0) | 2023.07.27 |
---|---|
[Git, GitHub] git fetch 와 git pull (0) | 2023.07.18 |
[Git, GitHub] git stash란? (0) | 2023.07.11 |
[Git, GitHub] Gif Diff란? (0) | 2023.07.06 |
[Git, GitHub] 브랜치(branch) 병합(merge)하기 (0) | 2023.07.06 |