Git 병합을 사용하면 빨리 감기와 빨리 감기 분기 병합을 수행 할 수 없습니다. 빨리 감기 병합을 사용하는 경우와 빨리 감기 병합을 사용하지 않는 경우에 대한 아이디어가 있습니까?
Git 병합을 사용하면 빨리 감기와 빨리 감기 분기 병합을 수행 할 수 없습니다. 빨리 감기 병합을 사용하는 경우와 빨리 감기 병합을 사용하지 않는 경우에 대한 아이디어가 있습니까?
답변:
이 --no-ff
옵션은 기능 분기에 대한 명확한 개념을 원할 때 유용합니다. 따라서 그 동안 커밋이 수행되지 않은 경우에도 FF가 가능합니다. 때로는 메인 라인의 각 커밋이 하나의 기능에 해당하도록하는 것이 좋습니다. 따라서 커밋이 많은 기능 분기를 단일 단위로 취급하고 단일 단위로 병합합니다. 로 분기 병합 기능을 수행 한 경우 이력에서 분명합니다 --no-ff
.
그런 것에 신경 쓰지 않는다면 가능할 때마다 FF로 도망 갈 수 있습니다. 따라서보다 svn과 같은 워크 플로 느낌을 갖게됩니다.
예를 들어,이 기사 의 저자는 --no-ff
옵션이 기본값이어야하며 그의 추론은 위에서 설명한 것과 비슷 하다고 생각합니다 .
"기능"브랜치에 대한 일련의 작은 커밋이 집합 적으로 하나의 새로운 기능을 구성하는 상황을 고려하십시오. "없이"git merge feature_branch "만 수행하면" --no-ff
Git 히스토리에서 커밋 객체 중 어떤 것이 모든 로그 메시지를 수동으로 읽어야하는 기능을 구현 한 경우 전체 기능 (예 : 커밋 그룹)을 되 돌리는 것은 진정한 두통 --no-ff
입니다 (사용되지 않는 경우 ). 반면 --no-ff
플래그가 사용 된 경우에는 쉽게 수행됩니다. 한 번의 커밋입니다. "
--no-ff
과 같은 기본 도구를 사용할 때 커밋 기록에 대한 이점 이 즉시 명백하지 않을 수도 있습니다 git log
. 현재 도구에 병합 된 모든 브랜치의 모든 커밋이 계속 표시됩니다. 예를 사용하는 경우 말했다, 장점은 명확하게 git log --first-parent
같은 통합 지점에 develop
또는 master
. 종교적으로 사용하면 병합 요청 --no-ff
을 독점적으로 표시 git log
하는 동시에 (더 많은) 포괄적 인 기록을 제공합니다. 그래서 Vincent는 GitFlow 와 함께 사용하도록 권장합니다 .
프로젝트에서 일반적으로 보이는 예를들 수 있습니다.
여기서 옵션 --no-ff
(즉, true merge )은 여러 부모와 함께 새로운 커밋을 만들고 더 나은 기록 추적을 제공합니다. 그렇지 않으면 기본적으로 --ff
(즉, 빨리 감기 병합 )가 사용됩니다.
$ git checkout master
$ git checkout -b newFeature
$ ...
$ git commit -m 'work from day 1'
$ ...
$ git commit -m 'work from day 2'
$ ...
$ git commit -m 'finish the feature'
$ git checkout master
$ git merge --no-ff newFeature -m 'add new feature'
$ git log
// something like below
commit 'add new feature' // => commit created at merge with proper message
commit 'finish the feature'
commit 'work from day 2'
commit 'work from day 1'
$ gitk // => see details with graph
$ git checkout -b anotherFeature // => create a new branch (*)
$ ...
$ git commit -m 'work from day 3'
$ ...
$ git commit -m 'work from day 4'
$ ...
$ git commit -m 'finish another feature'
$ git checkout master
$ git merge anotherFeature // --ff is by default, message will be ignored
$ git log
// something like below
commit 'work from day 4'
commit 'work from day 3'
commit 'add new feature'
commit 'finish the feature'
commit ...
$ gitk // => see details with graph
(*) 여기서 newFeature
브랜치를 재사용하면 새 브랜치를 만드는 대신 git이 --no-ff
병합 을 수행해야 합니다. 이는 빨리 감기 병합이 항상 적합한 것은 아닙니다.