커밋을 병합하거나 추가하지 않고 분기 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
'ProgramingTip' 카테고리의 다른 글
속성의 하위 집합에서 개체를 비교하는 재스민 매 처가하는? (0) | 2020.11.17 |
---|---|
알파벳을 어떻게 반복합니까? (0) | 2020.11.17 |
내 ClaimsIdentity IsAuthenticated가 항상 거짓 인 이유는 무엇입니까 (웹 API 승인 필터의 경우)? (0) | 2020.11.17 |
웹 페이지가 언제 마지막으로 업데이트되었는지 어떻게 알 수 있습니까? (0) | 2020.11.17 |
IntelliJ의 '즉시'창 (0) | 2020.11.17 |