ProgramingTip

커밋을 병합하거나 추가하지 않고 분기 b에서 a로 변경 사항 적용

bestdevel 2020. 11. 17. 20:40
반응형

커밋을 병합하거나 추가하지 않고 분기 b에서 a로 변경 사항 적용


내 시나리오는 빌드 프로세스 (분기 A)를 크게 개선 한 분기가 있고 분기에서 관련없는 기능 (분기 B)을 작업하는 것입니다. 이제 B 지점을 해킹 할 때 더 빠르고 쉬운 빌드를 원하기 때문에 쉽게 빌드 할 내용을 가져오고 싶습니다. 그러나 나는 브랜치 단계 변경을 "오염 단계에서 변경하지 않습니다."

내가 시도한 것 (branchB에 서있을 때) :

git merge --no-commit branchA

작동하지 않습니다. 그렇지 않다면 완벽 할 것입니다.

git checkout branchA -- .

변경 사항 master..branchA가 아닌 branchA..branchB간에 변경 사항을 적용 할 때 적용하지 않습니다.

다른 건 없나요?

편집 : 예, 분기 A의 변경 사항이 커밋됩니다. 이 예에서는 빌드 개선이있는 브랜치가 하나만 사용할 수있는 브랜치에서 작업하는 동안 적용하려는 빌드 개선 사항이있는 브랜치가 최대 N 개까지 가능합니다.


작업을해야 우리 비슷한 --squash했고 명령 병합 에 추가 하여 수정할 수있었습니다.

git merge --no-commit --squash branchA
git reset HEAD # to unstage the changes

cherry-pick -n원하는대로해야하지만, 빌드 개선을 무단계 변경으로 원하는 이유를 잘 모르겠습니다. 이로 인해 몇 가지 작업이 더 어려워집니다 (예 : 수정 된 파일에 대한 다른 변경 사항 병합 또는 모든 항목 리베이스).

이 예에서는 빌드 개선이있는 브랜치가 하나만 사용할 수있는 브랜치에서 작업하는 동안 적용하려는 빌드 개선 사항이있는 브랜치가 최대 N 개까지 가능합니다.

이 경우 A와 B (그리고 빌드가 개선 된 다른 모든 분기)에서 병합하는 새 분기 C를 만듭니다. 기능 브랜치 B에서 변경 사항을 커밋 한 다음 C 브랜치에 병합합니다. 이제 빌드 개선 사항과 기능 브랜치 변경 사항이 포함되어 있으므로 함께 테스트 할 수 있습니다. 더 많은 변경이 필요한 경우 C가 아닌 적절한 분기에서 수행 한 다음 C로 병합하십시오. 따라서 C 분기의 변경 사항은 절대 변경하지 말고 다른 분기의 변경 사항을 통합하는 데 사용하십시오.

즉, 더티 트리에서 커밋되지 않은 변경 사항을 저글링하는 대신 분기 C에서 Git의 모든 기능을 사용할 수 있습니다.


-n커밋을 바로 선택해야합니다 .


귀하의 요구 사항을 이해하고 있는지 잘 모르겠습니다.

병합을 실행 한 다음 git reset HEAD~1.


다음 순서는 모든 사이에 커밋 재생해야 master하고 branchA위에 branchB있습니다. 이미 여기서 커밋은 branchB건너 뛰어.

# start from branchA
git checkout branchA
# create a temporary branch wip
git checkout -b wip
# use rebase to replay each commit between master and wip on branchB
git rebase --onto branchB master wip

# if you want to remove all the commit history and only keep the resulting diffs,
# use git reset
git reset branchB

# change the active branch
git checkout branchB
# remove temp branch
git branch -d wip

100 % 명확하게 이해 못했지만 제 경우에는 분 기간에 diff 패치를 만든 다음이 경로를 B 분기에 적용했습니다.

지점 A 내부 :

 git diff branchA..branchB > patch.diff
 git apply patch.diff

참고 URL : https://stackoverflow.com/questions/20045946/applying-the-changes-from-branch-b-to-a-without-merging-or-adding-commits

반응형