2011-05-15 18 views
179

Mükemmel çalışma koduyla 9-sign-in-out adlı bir git dalım var ve bunu ana bilgisayara dönüştürmek istiyorum. Şu an ana daldayım.Git birleştirme hataları

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

Ben 9-sign-in-out şube geçmek için çalışıyorum, ama izin vermez yapmamı: Ben tüm ana dal hatalarını görmezden gelip içine 9-sign-in-out şube açmak nasıl

$ 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 

Herhangi fikri usta? Belki git rebase? Ancak kodu 9-sign-in-out dalında kaybetmek istemiyorum.

+0

9-giriş-çıkışında sizin rahatsız edilmeyen kodunuzu kaybetmek istemediğinizi mi kastediyorsunuz? –

+0

@Mauvis: Kodlarımı 9 oturum açma dalında zaten yaptım. – Sayanee

cevap

362

Bu o hata iletileri ne anlama geldiğini anlamak değer - needs merge ve error: you need to resolve your current index first bir birleştirme başarısız olduğunu belirten ve bu dosyalarda çakışma olmadığını. aksi takdirde bu, as described in the git manual birleştirme çakışmaları çözmelidir Ancak

git reset --merge 

: Eğer yapmaya çalıştığını ne olursa olsun birleştirme sonuçta kötü bir fikir olduğuna karar verdi ettiyseniz, birlikte normale döndü şeyler koyabilirsiniz. Eğer herhangi bir teknikle bu ele sonra


Eğer 9-sign-in-out dalı ödeme gerekir. 9-sign-in-outmaster için wRAR's answer numaralı belgede önerildiği gibi bir sorun, önceki ana dalınızı herhangi biriyle paylaşmış olmanız durumunda, bu sorunların ortaya çıkmasıdır, çünkü iki dalın geçmişi farklıysa, yayınlanacaksınız. yeniden yazılan tarih.

Temel olarak, konu başlığı 9-sign-in-out'u master'a birleştirmek, ancak konu başlıklarındaki dosyaların sürümlerini tam olarak tutmaktır. Aşağıdaki adımlarla yapabilirsiniz: Ben birleştirilmesi bitirmek için git add kullanılan

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

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

git status önerildiği üzere
# 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, Sonunda, şimdi tekrar birleştirmek için hatayı aldıktan sonra ne dediğinizi anladım. Ancak, bu hatayı yaşıyorum ::::::::::::: Sayanee: twitter sweska $ git master hatası: Aşağıdaki dosyalar için yerel dosyalarınızdaki değişikliklerin üzerine yazılır: \t webrat.log Lütfen şubeleri değiştirmeden önce değişikliklerinizi yapın veya bunları saklayın. Herhangi bir şekilde, webrat.log dalında kullanıcıyı kullanmak ve master ile birleştirmek için? – Sayanee

+1

@Sayanee: Bu farklı bir durumdan kaynaklanan farklı bir hatadır ve bununla karıştırıldığında yeni bir soru sormak daha iyi olacaktır. (Kısacası, git, 'webrat.log'daki kabul edilmeyen değişikliklerin üzerine yazılacağı için şubeleri değiştirmekten vazgeçiyor.) –

+1

Harika! Şimdi bu her şeyi açıklıyor :) Açıklama için teşekkürler! – Sayanee

31
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

Ben kontrol etmek zorlamak yerine aşağıda Mark gibi birleştirme sıfırlamak için çok daha temiz sanırım. – Thomas

0

, ardından git checkout çalışıyor.

İlgili konular