한동안 마스터에서 분기 된 release라는 분기가 있습니다. 이제 오늘은 basedMaster라는 마스터를 기반으로하는 브랜치와 basedRelease라는 릴리스를 기반으로하는 다른 브랜치가 있습니다. 최근에 10 개 이상의 커밋을 마스터로 변경했습니다. 나는 당신이 cherry-pick
그 커밋 을 할 수 있다는 것을 알고 있지만 그 10 개 이상의 커밋을 basedRelease 브랜치에 리베이스하는 방법을 찾고 싶습니다. 나는 basedMaster의 커밋이 10 개 이상인 커밋이 정확히 내가 원하는 것이라고 가정하고 있습니다. 나는 시도했다rebasing
그러나 그것은 내가 원했던 것이 아닌 다른 개발자의 커밋을 잡을 것입니다. 그런 다음 basedMaster에서 basedMasterLocal이라는 다른 브랜치를 소싱했습니다.이 브랜치 basedRelease에 내가 만든 10 개의 커밋 만 전달할 것이라고 생각했습니다. 그러나 나는 사용 cherry-pick
하고 싶지 않아 이것을 어떻게하는지 알아내는 데 어려움을 겪었고 이것을 사용하여 해결하고 싶습니다.rebase
이것을 그려 봅시다.
한동안 마스터에서 분기 된 release라는 분기가 있습니다.
A - B - C - F - G [master]
\
D - E [release]
이제 오늘은 basedMaster라는 마스터를 기반으로하는 브랜치와 basedRelease라는 릴리스를 기반으로하는 다른 브랜치가 있습니다.
나는 당신이 그 분기에 몇 가지 커밋을 추가했다고 가정합니다. 그렇지 않으면 관련이 없습니다.
H - I [basedMaster]
/
A - B - C - F - G [master]
\
D - E [release]
\
J - K [basedRelease]
최근에 10 개 이상의 커밋을 마스터로 변경했습니다.
두 개를 만들어 봅시다.
H - I [basedMaster]
/
A - B - C - F - G - L - M [master]
\
D - E [release]
\
J - K [basedRelease]
그래서 basedMaster에서 basedMasterLocal이라는 다른 브랜치를 소싱했습니다.
[basedMasterLocal]
H - I [basedMaster]
/
A - B - C - F - G - L - M [master]
\
D - E [release]
\
J - K [basedRelease]
이것으로 우리는 저장소의 상태에 대해 더 잘 알 수 있습니다.
그 10 개 이상의 커밋을 basedRelease 브랜치에 리베이스하는 방법을 찾고 싶습니다.
master에 있지만에는없는 모든 커밋을 원하는지 basedRelease
, 아니면 특별히 언급 한 10 개 이상의 커밋을 원하는지 확실하지 않습니다 . 당신이 원한다면 그리고 그것은 불분명 복사 를 ( cherry-pick
) 또는 이동 (그들을 rebase
).
나는 cherry-pick을 사용하지 않고 rebase를 사용하여 이것을 해결하고 싶기 때문에 이것을 수행하는 방법을 알아내는 데 어려움을 겪었습니다.
어느 쪽이든 여러 커밋을 선택할 수 있습니다. 다양한 커밋이 필요합니다. 우리가 사용할 수있는 ..
곳 x..y
수단 "X에서 접근하는 제외 Y에서 연결할 수있는 모든 커밋". 자세한 내용은 gitrevisions / 범위 지정을 참조하십시오 .
당신이 한 가정 basedRelease
이있는 모든 커밋 (체리 픽)을 복사하려면 ... 체크 아웃 master
하지만에 basedRelease
.
# All the commits reachable from master
# excluding those reachable from HEAD (the currently checked out commit).
git cherry-pick HEAD..master
10 개 이상의 커밋 만있는 경우 해당 10 개 커밋의 철자를 입력 할 수 있습니다. 이 예에서는 L과 M 두 개입니다.
git cherry-pick L M
또는 이것들이에 master
있지만에 있지 않은 커밋임을 관찰 할 수 있습니다 basedMaster
.
git cherry-pick basedMaster..master
그리고 이동 (리베이스)하려면.
git rebase --onto basedRelease basedMaster..master
비슷한 사례가있다 예 자식 - 체리 - 선택 과 자식 - REBASE이 설명에 유사한 예제가 실려있다 .
장수 브랜치 사이의 이런 종류의 복잡한 스와핑 커밋은 여러 장수 브랜치를 사용하지 말라고 권장하는 이유 중 하나입니다. 동기화를 유지하는 것은 매우 복잡합니다.
대신 오래 살았던 단일 분기를 갖는 것이 좋습니다 master
.. 에 직접 약속 된 것은 없습니다 master
. 모든 작업은 수명이 짧은 기능 분기에서 수행됩니다. 에 병합되기 전에 품질 보증을 통과해야합니다 master
. 병합되면 삭제됩니다. 이 방법 master
은 항상 안정적이고 출시 준비가되어 있습니다. 릴리스는 태그로 추적됩니다. 이것이 기능 분기 워크 플로 입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다