수색…
통사론
- git merge another_branch [옵션]
- 자식 병합 --abort
매개 변수
매개 변수 | 세부 |
---|---|
-m | 병합 커밋에 포함될 메시지 |
-v | 세부 출력 표시 |
--abort | 모든 파일을 해당 상태로 되 돌리려고합니다. |
--ff-only | 병합 - 커밋이 필요할 때 즉시 중단합니다. |
--no-ff | 병합 커밋을 강제로 생성하지 않아도 강제로 생성합니다. |
--no-commit | 병합이 실패하여 결과를 검사하고 조정할 수 없다고 가장합니다. |
--stat | 병합 완료 후 diffstat 표시 |
-n / --no-stat | diffstat 표시하지 않음 |
--squash | 병합 된 변경 사항이있는 현재 분기에 대해 단일 커밋을 허용합니다. |
한 분기를 다른 분기로 병합
git merge incomingBranch
이것은 브랜치 incomingBranch
를 현재 브랜치와 병합합니다. 예를 들어, 현재 master
있으면 incomingBranch
가 master
로 병합됩니다.
병합은 경우에 따라 충돌을 일으킬 수 있습니다. 이 경우 Automatic merge failed; fix conflicts and then commit the result.
라는 메시지가 나타납니다 Automatic merge failed; fix conflicts and then commit the result.
충돌 한 파일을 수동으로 편집하거나 병합 시도를 취소하려면 다음을 실행해야합니다.
git merge --abort
자동 병합
두 브랜치에서 커밋이 충돌하지 않으면 Git이 자동으로 병합 할 수 있습니다.
~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
file_a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
병합 중단
병합을 시작한 후에는 병합을 중지하고 모든 것을 병합 전 상태로 되돌릴 수 있습니다. --abort
사용하십시오.
git merge --abort
병합의 한 쪽에서 만 변경 유지
병합하는 동안, 당신은 통과 할 수 --ours
또는 --theirs
에 git checkout
한쪽에서 파일 또는 병합의 다른 모든 변경을 할 수 있습니다.
$ git checkout --ours -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes
커밋과 병합
기본 동작은 병합이 빨리 감기로 해결되고 병합 커밋을 만들지 않고 분기 포인터 만 업데이트하는 경우입니다. 해결하려면 --no-ff
를 사용하십시오.
git merge <branch_name> --no-ff -m "<commit message>"
병합 된 변경 사항이없는 모든 브랜치 찾기
때로는 변경 사항이 이미 마스터로 병합 된 분기가있을 수 있습니다. 이되지 않은 모든 지점 발견 master
에 비해 더 독특한 커밋이없는 그 master
. 이는 PR이 마스터에 병합 된 후에 삭제되지 않은 분기를 찾는 데 매우 유용합니다.
for branch in $(git branch -r) ; do
[ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
done | sort -r