Bu taahhüdü kontrol ettiğinizde ne yapmak istediğinize bağlıdır. Yaptığınız tek şey, o revizyonu oluşturabilmek veya test edebilmek için onu kontrol etmekse, kopuk bir kafa ile çalışmanın hiçbir sakıncası yoktur. git checkout master
Herhangi bir şubeye dahil olmayan taahhütler oluşturmamak için herhangi bir taahhüt vermeden önce ( örneğin) gerçek bir şubeyi kontrol etmeyi unutmayın .
Ancak, bu noktadan itibaren daha fazla işlem yapmak istiyorsanız, bir şube oluşturmalısınız. Bir şube tarafından referans verilmeyen taahhütler yaparsanız, bunlar kolayca kaybolabilir ve sonunda hiçbir şey onlara atıfta bulunmadığından git'in çöp toplayıcısı tarafından temizlenir. Şunları çalıştırarak yeni bir şube oluşturabilirsiniz:
git checkout -b newbranch ea3d5ed
Görselleştirmeye yardımcı olmak için, ayrı bir kafa üzerinde çalışmanın bir dalda çalışmaktan ne kadar farklı olduğunu gösteren bazı diyagramlar aşağıda verilmiştir.
En 3 kaydedilmesini ile başlar olsun master
A, B, ve C master
, bu yüzden, mevcut dalıdır HEAD
noktalarına master
C işlemek için olan noktalar,
ABC
* - * - * <- ana <- KAFA
Şimdi, eğer commit yaparsak, git, üst öğesi C olan bir commit yaratacak (çünkü bu, HEAD
via ile işaret edilen mevcut commitdir master
) ve master
bu yeni commit'i işaret edecek şekilde güncellenecektir . Bizim kaydedilmesini hepsi şimdi master
ve HEAD
yeni işaret yoluyla işlemek master
.
ABCD
* - * - * - * <- ana <- KAFA
Şimdi bize bir bağımsız vererek B'yi kontrol edelim HEAD
.
ABCD
* - * - * - * <- usta
^
\ - KAFA
Burada her şey yolunda gidiyor; tüm dosyalara bakabilir, programımızı oluşturabilir, test edebilir, vb. Hatta yeni taahhütler de oluşturabiliriz; ama bunu yaparsak, üzerinde olduğumuz bir dal yok, bu yüzden bu yeni işleme herhangi bir dalı işaret edemeyiz. Ona işaret eden tek şey HEAD
:
ABCD
* - * - * - * <- usta
\
* <- KAFA
E
Daha sonra master
tekrar kontrol etmeye karar verirsek , E'ye atıfta bulunan hiçbir şey olmayacak.
ABCD
* - * - * - * <- ana <- KAFA
\
*
E
Buna atıfta bulunan hiçbir şey olmadığından, bulmak zor olabilir ve git, hiçbir referansın terk edilmeyeceğini düşünür (bunlar oldukça yaygın olarak, yeniden taban alırsanız, yamaları sıkıştırırsanız veya başka eğlenceli tarih manipülasyonu yaparsanız olur; bunlar genellikle terk edilmiş yamaları temsil eder. artık umursamadığınız). Belirli bir süre sonra git, çöp toplama çalışmasının bir sonraki çalışmasında atılması için bunun çöp olduğunu düşünecektir.
Bu nedenle, çıplak bir revizyonu kontrol etmek ve bağımsız bir başlık almak yerine, daha fazla taahhütte bulunacağınızı düşünüyorsanız, git checkout -b branch B
bir şube oluşturup kontrol etmek için kullanmalısınız. Artık taahhütleriniz, kolayca başvurabileceğiniz ve daha sonra birleştirebileceğiniz bir şubeye dahil edileceği için kaybolmayacak.
ABCD
* - * - * - * <- usta
^
\ - dal <- HEAD
Bunu yapmayı unutursanız ve bir şubeden taahhütler oluşturursanız endişelenmenize gerek yoktur. İle baş revizyonuna atıfta bulunan bir dal oluşturabilirsiniz git checkout -b branch
. Zaten master
şubeye geri döndüyseniz ve başıboş bir taahhüdü unuttuğunuzu fark ettiyseniz, bunu kullanarak bulabilirsiniz git reflog
, bu da size HEAD
son birkaç gün içinde taahhütlerin nelere işaret ettiğinin bir geçmişini gösterecektir . Hala reflog'da olan hiçbir şey çöp olarak toplanmayacaktır ve referanslar genellikle en az 30 gün reflog'da tutulur.