branch
Komutun bu biçimini kullanıyorsanız (başlangıç noktasıyla), nerede olduğunuzun bir HEAD
önemi yoktur.
Ne yapıyorsun:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Önce HEAD
şubeye ayarladın dev
,
İkincisi, commit üzerine yeni bir dal başlatırsınız 07aeec98
. Bu commit'de bb.txt yok (github deponuza göre).
Yeni teslim aldığınız konumda yeni bir şube başlatmak istiyorsanız, başlangıç noktası olmadan şubeyi çalıştırabilirsiniz:
git branch test
veya diğerinin yanıtladığı gibi, tek bir işlemde şubeye gidin ve kontrol edin:
git checkout -b test
Sanırım 07aeec98
şubenin bir parçası olan bu gerçek kafanızın karışabileceğini düşünüyorum dev
. Bu taahhüdün bir atası olduğu doğrudur, dev
en son taahhüde ulaşmak için değişikliklere ihtiyaç vardır dev
. Ancak, en yeniye ulaşmak için gerekli olan diğer işlemlerdir dev
ve bunlar mutlaka tarihinde değildir 07aeec98
.
8480e8ae
(bb.txt eklediğiniz yer) örneğin geçmişinde değil 07aeec98
. Den dallarsanız 07aeec98
, tarafından yapılan değişiklikleri alamazsınız 8480e8ae
.
Başka bir deyişle: A dalını ve B dalını C dalına birleştirirseniz, ardından A işleminde yeni bir dal oluşturursanız, B'de tanıtılan değişiklikleri alamazsınız.
Aynı burada, dev'de birleştirdiğiniz master ve dev olmak üzere iki paralel dalınız vardı. Bir ana taahhüdünden (birleştirmeden daha eski) dallanma, dev değişikliklerini size sağlamaz.
Ana öğeden yeni değişiklikleri kalıcı olarak özellik dallarınıza entegre etmek istiyorsanız , master
bunlarla birleşmeli ve devam etmelisiniz . Bu, özellik şubelerinizde birleştirme işlemleri oluşturacaktır.
Eğer özellik dalları yayınlamadıysanız, ayrıca güncellenen ana bunları rebase: git rebase master featureA
. Olası çatışmaları çözmeye hazırlıklı olun.
Özellik dalları üzerinde birleştirme taahhütleri olmadan çalışabileceğiniz ve yine de ana sürümdeki yeni değişikliklerle entegre olabileceğiniz bir iş akışı istiyorsanız, aşağıdakileri öneririm:
- her yeni özellik dalını bir usta taahhüdüne dayandırın
dev
usta taahhüdünde bir şube oluştur
- Özellik dalınızın ana kopyadaki yeni değişikliklerle nasıl bütünleştiğini görmeniz gerektiğinde, hem ana parçayı hem de özellik dalını
dev
.
dev
Doğrudan taahhütte bulunmayın , yalnızca diğer şubeleri birleştirmek için kullanın.
Örneğin, A ve B özelliği üzerinde çalışıyorsanız:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
dev
Yeni ana makineyle iyi çalışıp çalışmadıklarını kontrol etmek için dalları bir dalda birleştirin :
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Özellik dallarınız üzerinde çalışmaya devam edebilir ve hem ana hem de özellik dallarından dev
düzenli olarak yeni değişikliklerle birleşmeye devam edebilirsiniz .
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Yeni özellikleri entegre etme zamanı geldiğinde, özellik dallarını (değil dev
!) Ana öğeye birleştirin .