Git을 처음 접하는 대부분의 사람들처럼 git merge와 git rebase에 적용 할 수있는 유스 케이스를 해독하려고 혼란을 겪고 있습니다. 나는 결과적으로 작업 카피 상태에 이르기까지, 당신에게 똑같은 것을주는 것을 마침내 결정했다고 생각합니다. 또한 둘 다 동일한 갈등을 낳습니다. 이것이 틀린 경우, 저에게 계몽의 모범을 보이십시오.git work : 쓰고 버리는 병합과 git-rerere - 요점은 무엇입니까?
제 생각에 병합 대신 rebase를 사용하면 (변경 사항을 푸시 또는 풀지 않은 경우) 내역을 선형으로 유지하는 것이 가장 좋습니다. 내가 정말로 이해하지 못하는 것은 git-rerere를 개발하는 이유이다.
맨 페이지에서 git-rerere는 이전에 해결 한 충돌을 해결하려는 경우에 도움이 될 것으로 예상됩니다. 참조하려는 예제는 http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html입니다.
프로젝트의 정책이 mainline의 변경 사항을 (Linux 커널과 같은) topic 브랜치로 지속적으로 병합하지 않는다면, 위의 예제는 "throw-away"merge 커밋을 생성한다고 말합니다. 근본적으로 마스터를 주제에 병합하고 테스트를 실행하여 모든 것이 제대로 작동하는지 확인한 다음 병합 커밋을 버리는 "git reset -hard HEAD ^"를 수행하십시오. 나중에 다른 "throw-away"병합 커밋을 만들 때 git-rerere는 frst throw-away 병합에서 이미 해결 한 충돌을 해결하는 데 도움을줍니다.
누군가가 일시적인 병합 커밋을 만드는 데 어려움을 겪지 않고 개발자가 자신의 주제를 마스터에 리베이스하지 않을 이유를 설명해 주실 수 있습니까? 그것은 자식 - rebase의 요점이 아닌가? 변화를 얻지 만 병합을 피할 것인가? 이것은 동일한 일을 성취하지 않으며, 아무도 주제 분기 변화를 가져 오지 않는다고 가정하면 훨씬 간단한 방법이 아닌가? 변경 사항을 푸시/당겼을 때 쓰래드 - 멀리 - 병합 + git-rerere 워크 플로우가 실제로 있습니까?
마지막 질문 하나 - Linus는 "로그에 'Merge branch linus'가 많이 표시된다면 나무가 분명히 임의의 쓰레기를 가지고 있기 때문에 나는 여러분에게서 끌어낼 수 없습니다. 그곳에 있으면 안됩니다 ... "리누스도 지속적인 리베이스에 문제가 있습니까?
답장을 보내 주셔서 감사합니다. bugfix 주석 - 두 커밋의 조상 인 최신 커밋의 브랜치는 실제로 매우 계몽적이었습니다. 그것은 단순한 생각처럼 보였습니다.하지만 저는 지휘 지점의 끝에서 분지를 뽑은 다음 체리로 달아서 그 주인에게 버그 수정을 고르라는 인상 아래있었습니다.이 접근법은 훨씬 더 깨끗해 보일뿐 아니라 필연적으로 리베이스를 방지합니다. – Josh
@ user370562 : 여기의 원칙은 업스트림/위 방향으로 병합하고 가능하면 그런 방식으로 브랜치를 만드는 것입니다. (덧붙여 말하자면, 유지 관리 브랜치는 곧바로 마스터로 병합 될 수 있으며 v5에서 만든 버그 수정은 여전히 개발중인 v6에 적용될 수 있습니다.) 워크 플로의 대부분의 제안은 위쪽으로 병합을 강조합니다. 예를 들어 'man gitworkflows'를 참조하십시오. . 도와 줘서 기뻐! – Cascabel