반응형
Git Command 이론 정리
- Cherry-Pick
- Head
- Reset, Revert
Cherry-Pick
한 브랜치의 특정 커밋만 다른 브랜치의 최신 커밋으로 추가
[Merge와 Cherry-pick의 차이점]
git command
git cherry-pick <commit ID>
Cherry-pick 사용법
- 현재 사용중인 브랜치에 커밋 푸시 및 commit ID 복사
git add . git commit -m "test" git push git log -> commit ID 확인 및 복사
- cherry-pick을 적용할 대상 브랜치로 checkout
git checkout <대상브랜치>
- Cherry-pick command로 commit 추가
git cherry-pick -e <commit ID>
- -e 옵션을 사용하면 commit message 수정 가능
- 브랜치에 commit 내용 반영
git push
- 현재 사용중인 브랜치에 커밋 푸시 및 commit ID 복사
Cherry-pick Conflict 해결
- Cherry-pick 중단
git cherry-pick --abort
- 충돌난 파일 수정 후 실행
git add . git cherry-pick --continue git push
- Cherry-pick 중단
HEAD
HEAD는 현재 체크아웃된 브랜치의 가장 최근 커밋, 특정 브랜치의 마지막 커밋에 대한 포인터
HEAD가 분리되는 과정
3번의 commit을 진행한 상태의 master 브랜치
[HEAD는 master 브랜치의 세번째 commit에 있음]
새로운 highlevel 브랜치 생성
[matser브랜치의 HEAD가 가리키던 커밋에서 생성]
새로 생성된 highlevel 브랜치로 Checkout
[HEAD가 highlevel브랜치의 가장 최신 커밋으로 이동]
highlevel 브랜치의 새로운 commit 생성
[HEAD가 highlevel브랜치의 가장 최신 커밋으로 이동]
master 브랜치로 Checkout
[HEAD가 master 브랜치의 가장 최신 커밋으로 이동]
master 브랜치의 새로운 commit 생성
[코드의 흐름이 분리,
분기하다
]master 브랜치에 highlevel 브랜치 merge
[highlevel에서 작업한 commit이 master에 새로운 commit으로 추가, HEAD는 master 브랜치의 가장 최근 commit에 있음]
Reset, Revert
Reset
현재보다 이전의 특정 commit으로 되돌리는 것, HEAD까지 체크아웃된 브랜치의 특정 commit으로 이동하며 삭제된 commit의 log 또한 사라짐
동작 과정
- 현재 Commit 상태
- Commit B 까지 Commit reset (Commit log 까지 삭제)
git command
git reset --hard a0fvf8 // commit된 파일들을 staging area로 돌려놓음 (commit 하기 전 상태, git status로 수정된 파일 확인 가능) git reset --soft [commit ID] // commit된 파일들을 working directory로 돌려놓음 (add 하기 전 상태, git status로 수정된 파일 확인 가능) git reset --mixed [commit ID] // commit된 파일들 중 tracked 파일들을 완전 삭제 (수정된 파일 확인 불가능, 단 Untracked 파일은 여전히 Untracked로 남음) git reset --hard [commit ID]
- 현재 Commit 상태
Revert
- 현재보다 이전의 특정 commit만을 되돌리는 것, 그리고 특정 commit이 되돌려진 것은 새로운 commmit으로 생성되며 HEAD는 체크아웃된 브랜치의 가장 최근 commit을 가리킴
- 동작 과정
- 현재 Commit 상태
- Commit D와 C를 Revert 하여 Commit B로 되돌아감
[Revert된 순서대로 D', C' Commit이 생성되고 HEAD는 가장 최근 Commit을 가리킴]
- git command
git revert 5lk4er // D 커밋 revert git revert 76sdeb // C 커밋 revert git revert [commit ID]
- git command
- 현재 Commit 상태
반응형
'개발일기' 카테고리의 다른 글
Redis Cache 이론 정리 (1) | 2023.10.29 |
---|---|
로그인, 로그아웃의 동작원리? 쿠키와 세션, 웹 스토리지 이론 (0) | 2023.10.15 |
이클립트(Eclipse) 다운로드 및 설치 방법 (0) | 2023.10.15 |
방화벽이란? ip주소, 포트번호에 대한 이론적 내용 정리 (1) | 2023.10.15 |
WEB 서버와 WAS(Web Application Server)의 차이 (1) | 2023.10.15 |