힘내 빨리 감기 VS 빨리 감기 병합
Git 병합을 사용하면 빨리 감기와 빨리 감기 분기 병합을 수행 할 수 없습니다. 빨리 감기 병합을 사용하는 경우와 빨리 감기 병합을 사용하지 않는 경우에 대한 아이디어가 있습니까?
이 --no-ff
기능은 기능 분기에 대한 명확한 개념을 원할 때 유용합니다. 따라서 그 동안 커밋이 수행되지 않은 경우에도 FF가 가능합니다. 때로는 메인 라인의 각 커밋이 하나의 기능에 해당하도록하는 것이 좋습니다. 따라서 커밋이 많은 기능 분기를 단일 단위로 취급하고 단일 단위로 병합합니다. 로 분기 병합 기능을 수행하면 기록에서 분명해집니다 --no-ff
.
그런 것에 신경 쓰지 않는다면 가능할 때마다 FF로 도망 갈 수 있습니다. 따라서보다 svn과 같은 워크 플로 느낌을 갖게됩니다.
예를 들어,이 기사 의 저자는 --no-ff
옵션이 기본값이어야하며 그의 추론은 위에서 설명한 것과 비슷 하다고 생각합니다 .
"기능"브랜치에 대한 일련의 작은 커밋이 집합 적으로 하나의 새로운 기능을 구성하는 상황을 고려하십시오. "없이"git merge feature_branch "를 수행 --no-ff
하면"Git 히스토리에서 커밋 객체 중 어떤 것이 모든 로그 메시지를 수동으로 읽어야하는 기능을 구현 한 경우 전체 기능 (예 : 커밋 그룹)을 되 돌리는 것은 진정한 두통 --no-ff
입니다 (사용되지 않은 경우 ). 반면 --no-ff
플래그가 사용 된 경우 쉽게 수행됩니다. 한 번의 커밋입니다. "
프로젝트에서 흔히 볼 수있는 예를들 수 있습니다.
여기서 옵션 --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
병합 을 수행해야 합니다. 이는 빨리 감기 병합이 항상 적합한 것은 아닙니다.
또한 코드가 하루 만에 배치되는 개인화 된 기능 분기를 원할 수도 있습니다. 이를 통해 개발을보다 세밀하게 추적 할 수 있습니다.
작동하지 않는 코드로 마스터 개발을 오염시키고 싶지 않으므로 --no-ff를 수행하는 것이 원하는 것일 수 있습니다.
참고로, 개인 git rebase -i
이 같은 브랜치에서 아무도 작업하지 않는 한 서버에서 히스토리를 다시 작성 하고 강제 실행할 수 있기 때문에 개인화 된 브랜치에서 작업 코드를 커밋하지 않아도됩니다 .
참고 URL : https://stackoverflow.com/questions/6701292/git-fast-forward-vs-no-fast-forward-merge
'Programing' 카테고리의 다른 글
범위를 벗어난 배열에 액세스하는 것이 얼마나 위험합니까? (0) | 2020.04.25 |
---|---|
Express 4.0으로 파일 업로드 : req.files undefined (0) | 2020.04.25 |
TortoiseHG로 분기하는 방법 (0) | 2020.04.25 |
왜 자바 스크립트`atob ()`와`btoa ()`의 이름이 그렇게 되었습니까? (0) | 2020.04.25 |
부모 컨테이너의 높이 백분율로 여백 또는 패딩을 설정하는 방법은 무엇입니까? (0) | 2020.04.25 |