Soru Birleştirme çakışmalarını çözme: Tüm dosyaların üzerine yaz


Git deposunda çalışıyorum kendi başıma (evet, bunu yapmanın etkilerini ve uyarılarını biliyorum) ve bir şekilde ağaçların biri, olmaması gerektiğinde itildikten sonra bir taahhütte bulundu.

Şimdi geri çekmeye çalışıyorum ve yüzlerce birleşme çatışmasından şikayet ediyor.

Git söylemek için bir yolu var mı zorla Uzak sunucudan gelen tüm dosyaları yerel olarak üzerine yazmak? Yapmaktan daha hızlı bir yol var mı git reset --hard HEAD~1 ve sonra çekimi yapıyor?

Aynı notta, basit bir birleştirme ile aynı şeyi yapmanın bir yolu var mı? Gördüğüm her şey, birleştirme çakışması çözüm aşamasındayken her bir dosyayı kontrol etmenizi önerir, ancak yüzlerce dosyayla bunu elle yapmak mümkün değildir.


32
2018-01-10 03:12


Menşei


neden sandbox'ınızı uçurmuyorsunuz ve git tekrar klonlaman gerekiyor? - gview
Fazla zaman almayan bir şey umuyorum. Proje büyük ve klonlanmak için iyi bir zaman alacaktır. - Qix


Cevaplar:


Uzak depoda bulunan son sürümü kopyalamak için üç basit çözüm var, yerel olarak yaptığınız tüm değişiklikleri atıyor:

  1. Deponuzu atın ve tekrar klonlayın. Bu en basit çözümdür, ancak deponuz büyükse, uzun sürebilir ve yeniden fazladan çaba gerektirebilir.configureing, vb

  2. İle yerel değişiklikleri atın git reset --hard <hash> ve sonra bir git pull. Sorun, öncelikle, kaçınmaya çalıştığınız değişiklik geçmişinden önce gelen bir taahhüt bulmanız gerekiyor. Karma işlemden sonra sıfırlama yaptıktan sonra git pull.

  3. Yap git fetch güncellemeleri uzak şubenin yerel referansına (genellikle orijin / master) getirmek ve daha sonra git reset --hard bu referansı geçerken, git reset --hard origin/master.


54
2018-01-10 03:31



# 3 oldukça akıllıydı. İyi cevap. Bu arada StackOverflow'a hoş geldiniz. Sadece bir not: kod veya komut satırı öğelerini göstermek için geri tırnaklar (`) kullanın. - Qix
git checkout --theirs . Birleştirme herhangi bir silme içermiyorsa işe yarar görünüyor - Alex R


git reset --hard {remote_repository_name}/{branch_name}

Örnek:

git reset --hard upstream/branch1

Bir şube ile çalışıyorsanız, yukarıdaki kodu kullanabilirsiniz. Ancak bundan önce, yerel depoya (giriş veya çıkış) ayarlamanız gerekir.

git remote add upstream https://github.com/lakini/example.git

İşte,https://github.com/lakini/example.git uzak upstream deposudur.

Aynı şekilde uzaktan depoda da (kaynak) çalışabiliriz.

git reset --hard origin/branch1

0
2017-10-04 06:20



Bu tam olarak diğer cevabın söylediği şey ... - Qix