2011-07-20 17 views
10

Yeni değişiklikleri zorlamaya çalışıyorum ancak çakışan bir dosyam var. Basmaya çalıştıktan sonra, aşağıdaki hatayı alıyorum:Git ve çekmem gerektiğini söylüyorsun, sonra çek, sonra çek mi?

Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

Tamam, bu yüzden git'i kullanmamız gerekiyor. Ben taahhüt denediğimde ilk hata geri dönün,

error: Your local changes to the following files would be overwritten by merge: 
    db/profile_edit.php 
Please, commit your changes or stash them before you can merge. 

Ama: ben git pull kullanmayı deneyin ve o zaman bu hatayı alıyorum. Ne yapmalıyım? Uzak repodaki değişiklikler yerel makinemdekilerden daha yeni. Öyleyse, nasıl bir fark aracı ile açmak ve değişiklikleri yapmak ve daha sonra değişiklikler yaptım o yüzden değişikliklere itmeme izin vereyim git söyle?

cevap

23

seninkinden önce uzaktan değişiklikleri çekin ve sonra işlemek için

$ git pull --rebase 

yapmaya çalışın. Ve işe yarayıp yaramadığını görün. Bu işe yaramazsa

, şunu yapmayı deneyin: Uzak iş-depo içinde taahhüt uygulamak,

$ git stash 
$ git pull --rebase 
$ git stash pop 

stash değişikliklerinizi kaydetmek için, ve sonra içine (stash içine kaydedilir) Değişiklikleri uygulamak senin tekrar iş deposu.

8

Öncelikle, git add ve sonra git commit'a gittiyseniz, yerel repo'unuzun git pull yapması yeterli olacaktır.

Ancak, akış yukarı yönde ne olduğunu görene kadar değişiklik yapmak istememeniz durumunda, git stash'u kullanabilirsiniz. Çalışma dizini geçici olarak temizler ve değişikliklerinizi kaydeder, böylece çekebilirsiniz (birleştirme noktalarından kaçınmak için git pull --rebase'u öneririm - ama kişisel bir zevk meselesidir). Akış yukarı yönde değişiklik yaptıktan sonra, yerel değişikliklerinizi git stash pop kullanarak geri alabilirsiniz. Çatışmaları temizledikten ve gereksiz değişikliklerden kurtulduktan sonra, ekleyebilir, işleyebilir ve ardından nihayetinde itebilirsiniz.

+0

+1, güzel bir açıklama – sha256

5

Kendinizi komutlarla karıştırıyorsunuz.

git commit git pull uzaktan getiriyor sizin repo

Sen kaydedilmemiş değişiklikler ile çekme çalışıyoruz içine taahhüt, böylece git uzağa bu ilk (ya git stash onları işlemek size istiyor seyahatseverlerin Git veri tabanında içine değişiklikleri kaydeder) böylece yerel değişikliklerinizi uzak olanlarla birleştirebilir.

İlgili konular