programing

피쳐 분기를 다른 피쳐 분기로 기본 재배치

instargram 2023. 5. 7. 10:57
반응형

피쳐 분기를 다른 피쳐 분기로 기본 재배치

제가 작업 중인 두 개의 (개인) 피쳐 분기가 있습니다.

a -- b -- c                  <-- Master
     \     \
      \     d -- e           <-- Branch1
       \
        f -- g               <-- Branch2

이 지점들에서 작업을 좀 한 후에 1 지점의 2 지점에서 변경 사항이 필요하다는 것을 알게 되었습니다.브랜치2의 변경사항을 브랜치1로 변경하고 싶습니다.마지막으로 다음 사항을 말씀드리겠습니다.

a -- b -- c                  <-- Master
           \
            d -- e -- f -- g <-- Branch1

두 번째 분기를 첫 번째 분기로 다시 작성해야 한다고 확신하지만, 올바른 구문과 어떤 분기를 체크아웃해야 하는지에 대해서는 완전히 확신할 수 없습니다.

이 명령을 실행하면 원하는 결과를 얻을 수 있습니까?

(Branch1)$ git rebase --onto Branch1 Branch2
  1. 지점 2로 전환

    git checkout Branch2
    
  2. 분기1 변경사항 위에 전류(분기2) 변경사항을 적용하고 분기2에 유지합니다.

    git rebase Branch1
    

그러면 브랜치2에서 원하는 결과를 얻을 수 있습니다.

a -- b -- c                      <-- Master
           \
            d -- e               <-- Branch1
           \
            d -- e -- f' -- g'   <-- Branch2

Branch1을 삭제할 수 있습니다.

참고: 사용 중인 경우Branch1Git 2.0(2014년 2분기)을 사용하여 다음을 입력할 수 있습니다.

git checkout Branch2
git rebase -

-~하듯이rebase이 경우 매개 변수는 '이전에 있었던 분기'를 의미합니다.Brian Gesiak의 commit 4f40740을 참조하십시오.

rebase허용"-전 분기에 대한 단기의

기본값을 다음과 동일한 단축형으로 티칭checkout그리고.merge지점의 이름을 에 붙이다rebase현재 분기, 즉 "-"우리가 이전에 있었던 지점"을 의미합니다.

이 기능은 덜 명시적이며 작은 실수로 인해 상태가 엉망이 될 수 있으므로 주의하여 사용하십시오.

이 솔루션은 요청한 대로 수행해야 합니다(Branch1에 머무르는 동안 Branch2의 커밋을 Branch1 위에 추가).

git checkout Branch1
git cherry-pick master..Branch2

당신은 이것으로 끝날 것입니다.

a -- b -- c                      <-- Master
           \
            d -- e -- f' -- g'   <-- Branch1 (current)
           \
            f -- g               <-- Branch2

이렇게 하면 지점 2의 각 커밋을 지점 1의 순서대로 선택할 수 있습니다.그런 다음 Branch2를 삭제할 수 있습니다.

기본 재배치를 요청하신 것은 알지만, 대신 지점 2에서 지점 1로 옮기고 싶은 커밋을 체리픽으로 선택하겠습니다.그러면 마스터에서 생성된 분기에 상관하지 않고 병합을 더 잘 제어할 수 있습니다.

a -- b -- c                  <-- Master
     \     \
      \     d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
       \
        f -- g               <-- Branch2

제가 이 질문을 오해하고 있나요?나의 본능은 사용하는 것이었습니다.rebase--onto다음과 같은 플래그:

git rebase --onto branch1 master branch2

기본 재배치 전:

* 6263580 (HEAD -> branch2) add g
* c802c88 add f
| * c80cfb0 (branch1) add e
| * aea5708 add d
| * 2e522fe (master) add c
|/  
* 0613527 add b
* e2a0c4d add a

기본 재배치 후:

* 7f6a363 (HEAD -> branch2) add g
* 4cbab60 add f
* c80cfb0 (branch1) add e
* aea5708 add d
* 2e522fe (master) add c
* 0613527 add b
* e2a0c4d add a

이는 명시적이며 어떤 커밋 집합이 무엇을 기반으로 하는지 명확하게 합니다.

언급URL : https://stackoverflow.com/questions/14893399/rebase-feature-branch-onto-another-feature-branch

반응형