Açıklamak istediğim ilk şey, şube adlarının sadece belirli bir taahhüt için bir takma ad olmasıdır. bir taahhüt git'in çalıştığı şeydir, çektiğinizde, birleştirmeyi vb. Her taahhüdün benzersiz bir kimliği vardır.
$ Git merge yaptığınızda, gerçekte olan git git, geçerli dalınızı başvurulan dalın bulunduğu işleme hızlı bir şekilde iletmeye çalışır (diğer bir deyişle her iki şube adı da aynı işleme işaret eder.) Bu senaryo git için en kolay olanıdır. yeni bir taahhüt olmadığı için uğraşmak. Ustanın dalınızın ürediği lilipad'a atlamasını düşünün. --No-ff bayrağını ayarlamak mümkündür; bu durumda git, herhangi bir kod çakışması olup olmadığına bakılmaksızın yeni bir işlem oluşturur.
Birleştirmeye çalıştığınız iki dal arasında kod çakışmalarının olduğu bir durumda (genellikle taahhüt geçmişi geçmişte ortak bir taahhüt paylaşan iki dal), hızlı ileri çalışmaz. git, çakışan dosyadaki her iki dal tarafından aynı satır değiştirilmediği sürece, dosyaları otomatik olarak birleştirebilir. bu durumda git, çakışan dosyaları sizin için birleştirir VE otomatik olarak işler. Git'in nasıl yapıldığını $ git diff --cached yaparak önizleyebilirsiniz. Veya --no-commit bayrağını, eklemeniz ve kaydetmeniz gereken değiştirilmiş dosyaları dizininizde bırakacak olan birleştirme komutuna iletebilirsiniz. Ancak $ git birleştirmenin neyi değiştireceğini incelemek için bu dosyaları dağıtabilirsiniz.
Üçüncü senaryo git'in otomatik olarak çözemediği çatışmalar olduğunda. Bu durumda, bunları manuel olarak birleştirmeniz gerekir. Bence bu araksis birleştirme veya p4merge (ücretsiz) gibi bir birleştirme ile yapmak en kolay. Her iki durumda da, her dosyayı tek tek yapmanız gerekir. Birleştirme sıkışmış gibi görünüyorsa, $ go merge --continue kullanın. Git size devam edip etmeyeceğini ve neden devam edip etmediğini söylemelidir. Birleştirmeyi bir noktada tamamladığınızı düşünüyorsanız, $ git merge --abort yapabilirsiniz ve herhangi bir birleştirme geri alınacak ve baştan başlayabilirsiniz. İşiniz bittiğinde, birleştirdiğiniz her dosya eklenmesi ve işlenmesi gereken değiştirilmiş bir dosya olacaktır. $ Git durumundaki dosyaların nerede olduğunu doğrulayabilirsiniz. Birleştirilmiş dosyaları henüz işlemediyseniz. Birleştirmeyi tamamlamak için bunu yapmanız gerekir.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
sonuçlanırfatal: cannot do a partial commit during a merge.
. Ve elbette, "Kısmi taahhütler" git man sayfalarında hiçbir yerde belgelenmiş veya tartışılmış gibi görünmüyor.git merge
Düzeltme sonrası bir sonuçPlease, commit your changes before you can merge.
Ne kırık bir eşek aracı ...