Git birleştirme hataları


264

9-sign-in-outMükemmel çalışan kod ile adlandırılan bir git şubem var ve onu master'a dönüştürmek istiyorum. Şu anda ana daldayım.

$ git branch
9-sign-in-out
* master

Şubeye geçmeye çalışıyorum 9-sign-in-out, ama bana izin vermiyor:

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

Tüm ana şube hatalarını yok sayabilir ve 9-sign-in-outdalı ana haline nasıl dönüştürebilirim? Belki git rebase ? Ama 9-sign-in-outşubedeki kodu kaybetmek istemiyorum .


9 oturum açma oturumunda kullanılmayan kodunuzu kaybetmek istemediğiniz anlamına mı geliyor?
Mauvis Ledford

@Mauvis: Kodlarımı 9 oturum açma-çıkış şubesinde zaten yaptım.
Sayanee

Yanıtlar:


531

Bu hata mesajlarının ne anlama geldiğini anlamaya değer - needs mergeve error: you need to resolve your current index firstbir birleştirme işleminin başarısız olduğunu ve bu dosyalarda çakışma olduğunu gösterir. Yapmaya çalıştığınız herhangi bir birleştirmenin kötü bir fikir olduğuna karar verdiyseniz, şeyleri normale döndürebilirsiniz:

git reset --merge

Ancak, aksi takdirde git kılavuzunda açıklandığı gibi bu birleştirme çakışmalarını çözmelisiniz .


Bununla her iki teknikle de uğraştıktan sonra 9-sign-in-outşubeyi kontrol edebilmelisiniz . Sadece yeniden adlandırma sorunu senin 9-sign-in-outiçin masterönerildiği üzere, wRAR verdiği cevaba kimseyle önceki ana dalı paylaştım, bu iki kol tarihinin diverged eğer bu yana, sen yeniden yazılması yayımlama olacağım, kendileri için sorun yaratacak olmasıdır Tarih.

Temel olarak yapmak istediğiniz şey konu dalınızı 9-sign-in-outbirleştirmek masterancak konu dalındaki dosyaların sürümlerini tam olarak tutmaktır. Bunu aşağıdaki adımlarla yapabilirsiniz:

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out

1
Mark, nihayet şimdi birleştirmek için hatayı aldıktan sonra ne söylediğini anladım. Ben, ancak bu hatayı alıyorum ::::::::::::: Sayanee: twitter sweska $ git ödeme ana hata: Aşağıdaki dosyalarda yerel değişikliklerin ödeme tarafından yazılır: webrat.log Lütfen, taahhüt dalları değiştirmeden önce değişikliklerinizi yapın veya saklayın. Durdurma ::::::::::::::::: herhangi bir şekilde, şube webrat.log kullanıcı ve master ile birleştirmek yapmak?
Sayanee

1
@Sayanee: Bu, farklı koşullardan kaynaklanan farklı bir hatadır ve kafanız karıştıysa, bu konuda yeni bir soru sormak daha iyi olacaktır. (Kısaca, git, sizi webrat.log
taahhüt edilmeyen

Ben sadece her şeyi rm ve reclone. Ama bu daha hoş.
sudo

43
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master

3
Bence ödeme zorlamak yerine Mark önerilen gibi birleştirme sıfırlamak çok daha temiz.
Thomas

8

önerildiği gibi git status,

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

Kullandığım git addsonra, birleştirilmesi bitirmek için git checkoutceza çalışır.



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.