sourcecode

특정 커밋으로 병합

copyscript 2023. 5. 24. 22:18
반응형

특정 커밋으로 병합

는 라는새분만습니다들었를라는 새로운 .newbranchmaster가지치기이제 몇 가지 작업을 마쳤으며 병합하려고 합니다.newbranchmaster하지만, 저는 몇 가지 추가적인 변경을 했습니다.newbranch그리고 나는 합병하고 싶습니다.newbranch부터 네 까지 지에네번약에 master.

저는 용한사를 요.cherry-pick그러나 올바른 옵션을 사용하라는 메시지가 표시됩니다.

git checkout master    
git cherry-pick ^^^^HEAD newbranch

깃을 사용할 수 있습니까?merge대신에 그것을 하는 것?

git merge newbranch <commitid>

물론이죠, 안에 있습니다.master branch 서해야할일다같습다니branch과음은에▁branch다.

git merge <commit-id>

commit-id는 지막커해시다니입의에서 입니다.newbranch당신이 당신의 안에 들어가고 싶은 것.master분점.

다음을 수행하여 모든 git 명령에 대해 자세히 알아볼 수 있습니다.git help <command>그런 경우라면git help merge그리고 의사들은 마지막 주장이merge는 명어는입니다.<commit>...따라서 임의의 커밋 또는 여러 커밋에 대한 참조를 전달할 수 있습니다.하지만, 저는 후자를 직접 한 적이 없습니다.

분기를 깨끗하게 유지하려면 다음 작업을 수행할 수 있습니다.

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

이렇게 하면 새 분기가 마스터에 병합된 위치에서 종료되고 새 분기2에서 작업을 계속합니다.

병합하여 커밋

저는 이것이 약속에 병합하는 매우 신뢰할 수 있는 방법이라고 생각합니다."source" 및 "target" 분기는 수정되지 않습니다("target" 분기의 병합 제외).

분를병고가정합니다다한합기▁ 병합하려고 합니다.src를 가지로 치다dst특정 커밋 ID까지만 가능합니다.commitId

git checkout src
git branch temp commitId        # create temporary branch at commitId
git switch dst             
git merge temp                     # merge temp branch to dst branch
git branch -d temp                 # remove temp branch as we dont need it anymore.

을 현재 하여 이 합니다.<commit-id>지점으로, 현재지로으점,로▁current▁branch,--no-commit으로 새 커밋을

git merge --no-commit <commit-id>

git merge --continue병합 결과 충돌이 발생한 후에만 실행할 수 있습니다.

git merge --abort현재 충돌 해결 프로세스를 중단하고 병합 전 상태를 재구성합니다.

최근에 우리는 비슷한 문제를 겪었고 다른 방법으로 해결해야 했습니다.우리는 두 개의 지점을 최대 두 개의 커밋까지 병합해야 했는데, 이는 두 지점의 헤드가 아니었습니다.

branch A: A1 -> A2 -> A3 -> A4
branch B: B1 -> B2 -> B3 -> B4
branch C: C1 -> A2 -> B3 -> C2

예를 들어 지점 A를 A2까지, 지점 B를 B3까지 병합해야 했습니다.하지만 C 지점에는 A와 B의 체리 픽이 있었습니다.A2와 B3의 SHA를 사용했을 때 SHA가 동일한 로컬 지점 C로 인해 혼란이 발생한 것으로 보입니다.

어떤 종류의 모호성을 피하기 위해 우리는 C 지점을 로컬로 제거한 다음, 커밋 A2에서 시작하는 AA 지점을 만들었습니다.

git co A
git co SHA-of-A2
git co -b AA

그런 다음 우리는 커밋 B3에서 BB 지점을 만들었습니다.

git co B
git co SHA-of-B3
git co -b BB

그 시점에서 우리는 AA와 BB 두 지점을 합병했습니다.분기 C를 제거한 다음 작동한 커밋 대신 분기를 참조함으로써.

이것이 어느 정도 미신이었는지, 실제로 무엇이 그것을 작동하게 했는지는 저에게 분명하지 않지만, 이 "긴 접근법"이 도움이 될 수 있습니다.

특정 분기를 마스터에 병합하려면 다음 작업을 수행하십시오.

git reset --hard <commit Id><-- 병합할 커밋

언급URL : https://stackoverflow.com/questions/8223103/merge-up-to-a-specific-commit

반응형