Dev/Git&GitHub
[Git] Head, Checkout, Detached / Attached, Branch
yujin.me
2021. 8. 9. 14:38
Head
현재 작업하고 있는 워킹 디렉토리가 어떤 버전과 같은지 가리키는 지시어
Checkout
head의 버전을 바꿔주는 지시어
Head 이동하기(시간여행하기)
이전 버전의 프로젝트 볼 수 있는 방법
Head가 Master를 가리키도록 만들기(시간여행하고 돌아오기)
1. master에서 오른쪽 버튼 > Checkout Branch
2. head -> master 로 변경됨
Detached / Attached
1. 커밋 메시지에서 Checkout을 하면 master가 detached 상태가 됨
2. 저 상태에서 문서 수정
Uncommitted Changes 문구가 뜬다
3. 수정한 문서 commit
- master와 head가 가리키는 부분이 달라짐
- 커밋을 하기 위해서는 head는 master를 가리켜야 함
4. head -> master
head->master를 하기 위해서는 master에서 Checkout Branch
modify work2.txt 커밋이 사라져버림~!!
5. 결론
- 그렇게 분리해서 쓰다가 다시 원래대로 돌아오려면 chekout master를 하면 된다
- 이때 임시로 작업했던 것들은 git log에는 단순히 남지 않지만 그래도 볼 수 있는 방법은 있다!
6. 그래서 detached와 attached가 뭐냐?
- Detached Head
- HEAD가 브랜치를 통해 간접적으로 commit을 가리키지 않고, 직접 커밋을 가리키는 것
- 실험적인 상태로 보고있을 때 Detached로 만듦
- Attached Head
- HEAD -> 브랜치 -> 특정 커밋 순서로 commit을 가리키는 상태
- 참고사이트
Branch
- 여러 개의 작업을 동시에 할 수 있음
- head를 왔다갔다 하면서 이전 버전 내역의 프로젝트를 볼 수 있음!
만드는 방법
원하는 버전에서 > 오른쪽 버튼 > Create Branch...
Reset current branch to this Commit
master의 첫번째 커밋한 버전에서 오른쪽 버튼 > Reset current branch to this Commit
실험하다가 실패했을 때 없애는 방법으로 사용
브랜치 합치기(협업하기)
master에 exp 결합하는 방법
1. 병합할 브랜치로 checkout하기
2. 병합될 브랜치 > 오른쪽 버튼 > Merge
master가 exp를 결합함
3. 공통의 부모 버전이 생긴다
master와 exp를 부모로 하는 버전이 생긴다
4. 새로 생긴 버전을 마스터3으로 옮기기
다시 결합해보는 방법..
참고 git log 명령어
# 한 줄로 다보기
git log --oneline --all
# 한 줄로 보기
git log --oneline
# 상세하게 보기
git log
# master가 commitId에 해당하는 버전을 가리킴
git reset --hard (commitId)
# head가 원하는 commitId에 해당하는 버전을 가리킴
git checkout (commitId)
반응형