Düzeltme işareti (^) karakteri ne anlama geliyor?


125

Git'te silinmiş bir dosyayı geri yüklemeye yardımcı olan bir sorunun cevabını burada gördüm .

Çözüm oldu

git checkout <deleting_commit>^ -- <deleted_file_path>

Düzeltme karakteri ( ^) ne yapar? Bunun başka yerlerde git'te çok faydalı şeyler yaptığını gördüm. Büyüleyici. Biri lütfen benim için onu bozsun ve bana ne yaptığını söylesin?


9
Bilginize, Windows'ta: ^ DOS kabuğunda beklendiği gibi çalışmıyor. Git bash kabuğunu kullanın ve sonra çalışır.
Cincinnati Joe

5
Bunu kullanmaya çalıştığımda bile aklıma gelmedi (ne anlama geldiğini tahmin ederek). Düzeltme işareti ( ^), cmd.exe'deki çıkış karakteridir. Yardımcı olup olmayacağını görmek için onu her kullanmaya çalıştığımda aslında hiçbir şey geçmiyordum, bu da sonuçların neden hiçbir zaman farklı olmadığını açıklıyor. > _> Aptal cmd.exe. git log master^^git log "master^"
İkiye

Yanıtlar:


138

HEAD^ mevcut dalın ucunun ilk ebeveyni anlamına gelir.

Git commits'in birden fazla ebeveyni olabileceğini unutmayın. HEAD^kısaltmasıdır HEAD^1ve HEAD^2uygun şekilde ele alabilirsiniz.

Sadece ebeveynlere değil, herhangi bir taahhütte de bulunabilirsiniz HEAD. Ayrıca nesiller arasında geri dönebilirsiniz: örneğin, master~2belirsizlik durumlarında ilk ebeveyni destekleyen, ana dalın ucunun büyük ebeveyni anlamına gelir. Bu belirteçleri, keyfi olarak zincirleme edilebilir mesela , topic~3^2. İle ilgili cevabı bakın arasındaki fark nedir HEAD^ve HEAD~Git'te?

Tüm ayrıntılar için, "Revizyonları Belirtme" bölümüne bakın git rev-parse --help.


1
Ama sonra, doğrusal tarih üzerinde, neden HEAD^^^üçüncü eski commit döndürüyor yani eşdeğerdir HEAD~~~?
Vorac

1
@Vorac Doğrusal tarih için, evet.
Greg Bacon

21

"Ebeveyn" anlamına gelir. Yani HEAD^"mevcut HEAD'in ebeveyni" anlamına gelir. Hatta bunları birbirine zincirleyebilirsiniz: HEAD^^"mevcut HEAD'in ebeveyninin ebeveyni" anlamına gelir (yani mevcut HEAD'in büyük HEAD^^^ebeveyni ), " mevcut HEAD'in ebeveyninin ebeveyninin ebeveyni" anlamına gelir ve benzeri.


16

^Zaman (şapka) de kullanılabilir aralıklarını belirterek .

Bir kaydetmeden ulaşılabilen kaydetmeleri hariç tutmak için, bir önek ^ gösterimi kullanılır. Örneğin ^ r1 r2, r2'den ulaşılabilen işlemeler anlamına gelir, ancak r1'den erişilebilenleri hariç tutar.

<Rev>

Ulaşılabilen taahhütleri dahil edin (yani ataları).

^ <Rev>

Ulaşılabilen taahhütleri hariç tutun (yani ataları).


10

İşte görsel bir açıklama. Böyle bir geçmişiniz olduğunu varsayalım:

                      master  
  ... <- B <- C <- D
             /
... <- E <- F
              feature

Özellik ana olarak birleştirildiğinde, Ciki atayla oluşturuldu. Git bu atalara sayıları atar. Ana hat üst Böğesi 1 olarak atanır ve özellik üst Föğesi 2 olarak atanır.

Böylece C^1ifade eder Bve C^2ifade eder F. C^için bir takma addır C^1.

Sadece kullanacaksın <rev>^3. Eğer üç dal birleştirme yapmış olsaydın.


7

İmleç, belirli bir kaydetmenin ebeveynini ifade eder. Örneğin HEAD^, mevcut HEAD commmit'in üstünü ifade eder. (ayrıca, HEAD^^büyük ebeveyni ifade eder).


4

Karat, bir kesinleştirme ofsetini (üst öğe) temsil eder. Örneğin, HEAD^"HEAD'den bir işlem" ve HEAD^^^"HEAD'den üç işlem " anlamına gelir.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.