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
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
.
Nasıl açık birden fazla dosya "Py...
Nasıl değişmez bir " baskı miyim;{}&qu...
Nasıl "reddedildi" " mes...
Nasıl bir boru ile kullanma "tee&...
Nasıl "yorum-out" bir toplu ...