SORU
15 Ocak 2010, Cuma


Nasıl uzaktan değişiklikleri atmak ve "çözüldü" bir dosya işaretleyebilir miyim?

Bazı yerel dosyalar, uzaktan şubesinden çekiyorum ve çatışmalar var. Benim yerel değişiklikleri tutmak ve uzaktan değişiklikleri çatışmalara neden göz ardı etmek istiyorum biliyorum. Orada etkisi demek için kullanabileceğim bir komut "çözülmüş, kullanımı yerel olarak tüm çatışmalar işareti"?

CEVAP
15 Ocak 2010, Cuma


git checkout --ours vardı yerel dosya sürüm kontrol seçeneği yaptığın sürümü olan --theirs, (farklı olarak). git checkout . ağaçtaki her şeyi kontrol etmek söylemek iletebilirsiniz. Sonra git add, ve iş bir kere yapılır işlemek olan çözülmüş, çatışmalar işaretlemek gerekir:

git checkout --ours . # checkout our local version of all files
git add -u            # mark all conflicted files as merged
git commit            # commit the merge

git checkout komut . not. Bu çok önemli ve kolayca gözden kaçabilir. git checkout iki modu vardır; bir geçer dalları, ve hangi dosyaları kontrol eder dışarı dizini içine çalışma kopyası (bazen içine çekerek onları dizinden diğer bir değişiklik ise, ilk). Bu şekilde ayırt edilir mı oldun geçmiş bir dosya adı; etmediysen geçirilen bir dosya çalışır geçiş dalları (ama eğer geçme bir şube ya, sadece deneyin kontrol mevcut şube tekrar), ama o reddetti bunu yapmak için varsa değiştirilmiş dosyaları gerçi etkisi. Eğer varolan dosyanın üzerine olacak bir davranış varsa, bu, . git checkout ikinci davranış için bir dosya adı geçmesi gerekir.

Bir dosya adı, git checkout --ours -- <filename> gibi -- ile dengelemek için geçen zaman da iyi bir alışkanlık değil. Eğer sen bunu yapma, ve dosya adı olur adına maç bir şube ya da etiketi, Gıt olacağını düşünüyorum kontrol etmek ister, bu değişikliğin dışında, yerine kontrol eden dosya adı, ve bu yüzden ilk form checkout komut.

Çatışmalar ve merging Gıt nasıl çalıştığı hakkında biraz genişleteceğim. Başkasının kodunu da bir çek, bir çek aslında bir getirme izledi birleştirme sırasında olur) ile birleştirdiğinizde, birkaç olası durum vardır.

En basit aynı revizyon olduğunu. Bu durumda, sen "zaten güncel" ve hiçbir şey olmuyor.

Başka bir olasılık olduğunu onların revizyon sadece bir torunu Senin bu durumda, sen-ecek varsayılan bir "ileri birleştirme", hangi HEAD sadece güncelleme için kendi taahhüt, hiçbir birleştirme oluyor (bunu devre dışı Eğer gerçekten istediğiniz bir kayıt birleştirme kullanarak --no-ff).

Sonra sen aslında iki revizyonları birleştirmek için gereken durumlar içine almak. Bu durumda iki olası sonucu vardır. Bu temiz olur birleştirme biridir; tüm değişiklikleri farklı dosyalarda veya aynı dosyaları ama her iki değişiklik kümesini bir sorun olmadan uygulanabilir yeterince uzak arayla. Varsayılan olarak, ne zaman temiz bir birleştirme olursa, otomatik olarak kaydedilmiş olsa da devre dışı bırakabilirsiniz bu --no-commit gerekirse düzenleme önceden (örneğin, yeniden adlandırma fonksiyonu foo bar ve bir başkası ekler yeni çağıran kod foo, birleştirme temiz, ama üretmek bir kırık ağaç, böylece isteyebilirsiniz Temizle parçası olarak birleştirme işlemek önlemek için sahip herhangi bir kırık tamamlar).

Son umut gerçek bir birleştirme var, çatışmalar var. Bu durumda, Git yapacak kadar bu birleştirme ve üretme dosyaları ile çakışma işaretleri (<<<<<<<, ======= >>>>>>>) çalışma kopyası. Endeksi (olarak da bilinir "depo alanı"; Bu yer nereye dosyalardır saklı git add işlemeden önce onları, sen-ecek var 3 sürümleri her dosya çakışmaları; orijinal sürümü dosyadan atası olan iki Dalı vardır birleştirilmesi, sürümden HEAD (side birleştirme) ve sürümünden uzak şube.

Çakışmayı çözmek için, ya çalışma kopya edilen dosya, çatışma işaretleri kaldırma ve çalışır kodunu tamir düzenleyebilirsiniz. Ya, birleştirme ya da diğer tarafın tek sürümü, git checkout --ours git checkout --theirs kullanarak kontrol edebilirsiniz. Bir kez sen koymak dosyasına devlet istiyorsun, belirttiğiniz sana birleştirilmesi dosya ve hazır taahhüt kullanma git add ve sonra tamamlama birleştirme git commit.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013