msater..feature
의 모든 변경 내용을 dir1
에 병합하려는 경우 master
. 병합베이스에서 병합 팁까지의 컨텐츠 차이에 대해서만 병합합니다. 어떻게 당신이 거기에 갔는지 상관하지 않습니다. 그래서, A는 그 병합 할 올바른 병합베이스와 내용 만 변경이 커밋합니다 당신이 원하는
git checkout -b feature-dir1-extract $(git merge-base master feature)
git checkout feature -- dir1
git commit -m "extracting dir1 changes from [email protected]$(git rev-parse feature)"
이제 당신이있어 모든 변경 사항을, 그리고 당신은 그 병합 할 수 있습니다 :
git checkout master
git merge feature-dir1-extract
을
이 내용은 병합 된 콘텐츠를 똑바로 유지하기에 충분합니다. dir1
콘텐츠가 모두 feature
인 것으로 나타나고 master
에 표시됩니다. 정확히 일치하는 병합 기준이있는 것입니다. (git log --graph
또는 gui 도구를 통해) 커밋 그래프를 읽는 사람들이 상기 동일한 콘텐츠가 현재로서는 두 가지에 있음을 단지 unremarked 사실보다는 가계를 통해 녹음을 병합 : 추출 지점의 이름과 역사가는 역사 자체를 저지 읽는 사람들 만 지금 재미있다,에 관계없이
git checkout feature
git merge feature-dir1-extract # recording common content only, no changes
하고, 병합 커밋에는 이름과 기록이 모두 기록됩니다. 의 이름을 광고해야 할 필요가 없습니다 모두에게 무의미한 궁금해 :
git branch -d feature-dir1-extract
내가 원래 체리 - 선택하지만 접근 방식 몇 가지 문제를 사용하는 계획 커밋의 거대한 수 있었고, 또한 단지에있는 방법을 모르고 기능 지부에만 적용된 커밋을 얻으십시오 – draca
'git branch --contains'을 사용하여 커밋이 어느 분기에 있는지 확인할 수 있습니다. 그러나 나는 동의한다, 나는 많은 커밋들에 대해 체리 피클을 사용하고 싶지 않다. –
그냥 디렉토리의 복사본을 만드는 것에 대한 생각 나는 그 위에 기능 지회를 병합 한 후 업데이트하고 복원하고 싶지는 않지만 ... " directoryname; git checkout directoryname"을 수행하여 무엇이든 얻을 수 있습니까? 우리는 실제로 취소 될 불필요한 델타를 추가하고 싶지 않습니다. – draca