: 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능
git branch
: branch의 목록을 보여줌
git branch branch명
: branch 생성
git log --all --graph --oneline
: 모든 branch를 시각적 표현하여 보여줌
git checkout branch명
: branch 전환
git branch -d branch명
: branch 삭제
(base) yerinui-MacBook-Pro:manual yeah0325$ git log --all --graph --oneline
* 869ea7f (HEAD -> master) master work 4
* e2c7442 (ms, google, apple) work 3
* d5f6dfc work 2
* 04f7e13 work 1
⬇️
git checkout apple
: branch가 apple을 가르키고 work3 상태로 돌아감
⬇️
(base) yerinui-MacBook-Pro:manual yeah0325$ git log --all --graph --oneline
* 869ea7f (master) master work 4
* e2c7442 (HEAD -> apple, ms, google) work 3
* d5f6dfc work 2
* 04f7e13 work 1
→ add, commit 한 결과에 따른 그래프가 보여진다.
→ 공통의 작업을 공유하면서, 각자 자신의 작업을 갖고 있다.
(base) yerinui-MacBook-Pro:manual yeah0325$ git log --all --graph --oneline
* e0ec099 (HEAD -> ms) ms work 4
| * 568c530 (google) google work 4
|/
| * fd25eaf (apple) apple work 4
|/
| * 869ea7f (master) master work 4
|/
* e2c7442 work 3
* d5f6dfc work 2
* 04f7e13 work 1
cf) git commit --amend
: git commit 메세지 수정
(base) yerinui-MacBook-Pro:manual-merge yeah0325$ git log --all --graph --oneline
* 22f22b8 (o2) o2 work 2
| * 7bf086c (HEAD -> master) master work 2
|/
* 15d7861 work 1
⬇️
git merge o2
: 현재 branch와 o2 brench를 병합한 새로운 버전 생성
⬇️
(base) yerinui-MacBook-Pro:manual-merge yeah0325$ git log --all --graph --oneline
* c170d65 (HEAD -> master) Merge branch 'o2'
|\
| * 22f22b8 (o2) o2 work 2
* | 7bf086c master work 2
|/
* 15d7861 work 1
git reset --hard 7bf086c
: 리셋하고 싶은 버전 지정
: git이 충돌을 처리하는 방법
💢 합치려는 branch가 다를 경우 충돌이 일어남
here | base | there | 2 way merge | 3 way merge |
---|---|---|---|---|
A | A | A | A | A |
H | B | B | 💢 | H |
C | C | T | 💢 | T |
H | D | T | 💢 | 💢 |
→ 합치려는 branch 중 하나만 수정되었을 경우 수정된 값으로 변경
→ 2 way와 비교했을 때 훨씬 더 많은 부분을 자동화해서 병합 가능
외부 도구를 이용해서 병합
git comfig --global merge.tool p4mergetool
: git의 전역설정으로 mergetool을 p4mergetool로 지정
git config --global mergetool.p4mergetool.cmd \> "/Applications/p4merge.app/Contents/Resources/launchp4merge \$PWD/\$BASE \$PWD/\$REMOTE \$PWD/\$LOCAL \$PWD/\$MERGED"
cat ~/.gitconfig
: git이 어떻게 동작할 지 결정하는 파일
⬇️
[merge]
tool = p4mergetool
[mergetool "p4mergetool"]
cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge $PWD/$BASE $PWD/$REMOTE $PWD/$LOCAL $PWD/$MERGED
→ p4mergetool의 경로와 tool을 켤 때 필요한 여러가지 정보를 git이 주입해줄 수 있도록 셋팅
git mergetool
: p4mergetool 실행
→ conflict 난 곳 수정후 저장 (자동으로 add 됨)
work.txt.orig : backup 해놓은 파일