Farz edinki aşağıdaki gibi bir yapı var:
develop
commit a
commit b

test
commit a
commit b
commit c

test/feature-1
commit a
commit b
commit c
commit d

şimdi ben test/feature-1 branch'ndeki commit d'nin develop'a merge'lenmesi için PR açmak istiyorum. develop'dan test/feature-1'a merge mi almalıyım yoksa rebase mi yapmalıyım ya da başka bir şey?
develop'a a,b,c'nin değil de sadece d'nin gitmesini istiyorum.
yani test/feature-1'in yapisi commit a,b,d'ye dönmeli ki sadece aradaki fark gitsin?

 

Örnekte test branch'inin varlık sebebini tam anlayamadığım için yanlış cevaplama ihtimalim var. develop'ta a, b'yi sabit tutup üzerine c'nin gelmeyip sadece d'nin gelmesini istiyorsunuz yani. Merge yapmam, feature-1'deki commit d'yi develop'a cherry pick'lerim bu durumda.

jack of hearts

evet cherry pick yapabiliriz ama bunu develop branch'inde değil test/feature-1'da yapmak istiyorum ki sonra history'e baktığımızda anlaşılır olsun. yani test/feature-1'ın history'si a,b,d'ye dönüşmesi gerek.

sting

test/feature-1 branch'indeyken rebase -i develop yazın. -i flag'i interactive demek, listede size c ve d commit'ini ekleyeyim mi diye soracak. c'ye drop diyip d'yi kabul (pick) ederseniz istediğiniz olur.

plutongezegendegilmi

Ben bu durumlarda şöyle yapıyorum:
develop'tan yepyeni branch alın.

develop-d
commit a
commit b

bu branchteyken commit d'yi cherry pick yaparsanız son durumda:

develop-d
commit a
commit b
commit d

olur. develop-d'yi develop'a mergelemek için PR açın. Değişiklik olarak sadece commit d görünecektir.

History'de de daha anlaşılır olur.

edit: yazılmış zaten bunlar.

nickini vermek istemeyen uye
1

mobil görünümden çık