git branch
$ git branch <branch 이름>
temp
라는 브랜치를 만든다면$ git branch temp
main
, temp
브랜치가 Commit 2를 동시에 보고 있음temp
브랜치는 remote server에서 모르고 있음--merged/--no-merged
$ git branch --merged
: 현재 브랜치의 기준으로 Merged된 브랜치인지? 필터링해 볼 수 있다.(HEAD->new) $ git branch --merged
main #
* new # 이 브랜치는 위의 'main'과 'poweraid'가 합쳐진 것입니다.
poweraid #
git branch --no-merged
: 현재 브랜치의 기준으로 병합 안된 다른 브랜치 있는지?$ git branch -d [제거할 브랜치]
$ git branch -D [강제 제거할 브랜치]
$ git branch -d poweraid
$ git branch -f [BRANCH] [어디로?]
$ git branch -f main HEAD^2
main
이 origin/main
보다 뒤쳐 졌다면, 아래의 명령어로 local/main
이 -> origin/main
을 가르키게한다.$ git branch main origin/main
git merge
$ git checkout main
$ git merge <병합 먹을 브랜치>
$ git merge client
# 충돌 시, 충돌 파일 수정 후
$ git add [충돌 파일1[...]]
$ git commit -m"merge1"
$ git merge new
# 충돌 시, 충돌 파일 수정 후
$ git add [충돌 파일1[...]][
$ git commit -m"merge2"
# 현재 브랜치는 new
$ git merge poweraid
자동 병합: test.txt
충돌 (내용): test.txt에 병합 충돌
자동 병합이 실패했습니다. 충돌을 바로잡고 결과물을 커밋하십시오.
-> 수정
$ git add test.txt # 다시 add
$ git commit -m "merge" or $ git commit --amend # 재 커밋 해야함
git revert
git revert
도 reset
처럼 commit
을 되돌린다.git revert <되돌아 가고 싶은 commit>
git reset
과의 차이점은 무엇인가? git reset
은 되돌리면 그 이전은 사라짐git revert
는 되돌린 것도 유지되고 revert된 것도 commit으로 남음$ git cherry-pick [COMMIT]
local/main
-> argparse, subprocess update
origin/main
-> dijkstra algorithm
dijkstra algorithm
'커밋'만 local/main에 cherrypick하고 싶다.$ git checkout main # local/main
(HEAD -> main) $ git cherry-pick [cherry-pick할 커밋]
1. git cherry-pick origin/main
2. git cherry-pick e9e6c7c
$ git cherry-pick --skip
$ git cherry-pick --abort
dijkstra/dijkstra.py
에서 충돌1-1. 문제가 난 파일을 수정하자
(HEAD -> main) $ git add dijkstra/dijkstra.py
(HEAD -> main) $ git cherry-pick --continue
(HEAD -> main) $ git push origin main [-f]