Git bir dosyanın “güncellenmesi gerekiyor” dediğinde ne anlama gelir?


156

Benim hayatım için git bazen zaman zaman tükürür "[dosya]: güncelleştirilmesi gerekiyor" iletisinin iyi bir açıklama bulamıyorum. Resmi git SSS bile bunu bir TODO olarak işaretledi. Birisi A) ne anlama geldiğini açıklayabilirse; ve B) nasıl düzeltebilirim, çok minnettar olurum.


1
İyi soru, dediğin gibi GitFaq'ın bile bir cevabı yok: git.wiki.kernel.org/index.php/…
Justin Ethier


1
Tam olarak hangi komutun bunu ürettiğini söyleyebilir misiniz? Peki Git'in hangi sürümü? Bunları kullanıcı arayüzünden kaldırmaya çalıştım, bu yüzden son Git, unuttuğum yerler dışında bunu sana söylememeli ;-).
Matthieu Moy

Yanıtlar:


108

Bu, değişiklikleri bir yerden birleştirmeye çalıştığınız anlamına gelir, ancak değişiklikler kirli bir dosyada (şu anda çalışma ağacınızda değiştirilmiş olan) değişiklikler içerir. Bekleyen değişikliklerinizi yerine getirmeniz veya saklamanız, güncellemek için ne yaparsanız yapın / rebase / merge / çekip kaldırmanız gerekir.


4
Aslında çekme değil - çekmenin bir parçası olan birleştirme. Yerel bir dalı aynı sorunla birleştirmeye çalışırsanız aynı hatayı görürsünüz ve bence diğer mergey işlemleri (uygula, stash uygula ...) aynı değilse benzer hataları yazdırır.
Cascabel

Ah teşekkürler. Bu aslında mantıklı. Sanırım farklı bir şubeye gitmeden önce değişiklikleri yaptığımdan emin olmalıyım.
rofrankel

7
Arama sonuçlarına yardımcı olması durumunda, ben de git svn rebasekirli bir çalışma kopyası ile yapmaya çalışırken bu sorunla karşılaştım . Stash save, rebase, stash pop ve her şey yolundaydı.
Adam Tuttle

1
Dosyanın kendisi değiştirilemeyebilir - dosya özniteliklerini (izinler gibi) değiştirmek bile buna neden olabilir.
chiborg

22

Diğerlerinin de belirttiği gibi, güncelleme mesajına ihtiyaç duyulması dosyanın kirli veya başka bir deyişle eski olduğu anlamına gelir . Ama bunun yerine, sıfırlama işlemini tekrar tekrar tüm başlama ne yapılabilir basitçe git statusve daha sonra git add <file> eğer açıldığını gösteriyor değiştirilen listede. Çünkü dosyayı daha önce ekleyebildiniz, ancak daha sonra değiştirdiniz. Bu benim başıma geldi ve bu basit ile addproblemi çözdüm.


7

Üretim / hedef sunucunuza giriş yapın, cd uygulamanızı içeren dizinde oturum açın ve bu iki komutu yürütün.

1. En son sürüme sıfırlayın

UYARI, bu tüm değişikliklerinizi silecektir:

git reset --hard HEAD

2. Değişiklikleri çekin

git pull origin master


1
[git reset --hard HEAD] benim için çalıştı. Bir Windows paylaşım sürücüsünden çalışmıştım, ancak Ubuntu dizinim aynı klasör olmasına rağmen yaptığım taahhüdü yansıtmayacaktı (Z: / var / www / html / ile eşleştirilmiş). Bunu yaptıktan sonra, [git status] ve [git pull] artık güncel olduğunu gösteriyor.
Keith DC

Bu benim için de işe yarayan çözüm. Windows'ta SourceTree kullanarak git subtree kullanmaya çalıştım ve bu süreçte kötü bir şekilde berbat.
Artem Russakovskii

3

Bağlantılı diğer sorunun cevabının söylediği gibi, mesaj sadece olağanüstü değişiklikleriniz olduğu anlamına gelir. Bunu da elde edersiniz, örneğin bazı değişiklikleri sahne alırsanız git add, fikrinizi değiştirin ve git reset HEAD filebaştan başlamak niyetiyle yapın.


2
git reset HEAD fileaynı mesajın görünmesine neden oluyor
uzman

2

Bu hata, rebase işlemi hedef dalda olmayan dosyalarda ek değişiklikler yaptığında oluşabilir .

Benim için zor kısmı .gitattributes benim repo dosya . Başka bir dalda yeni ikili dosya türü eklendi, ancak işlenmesi metin dosyası olarak zorlandı. Dosya repo'dan git ile indirildiğinde, EOL'ler (aslında ikili değer baytları) değiştirildi ve ikili fark oluştu.

Yeni dosya türünü ikili olarak işlemek için yeni bir giriş eklemek ve tüm süreci yeniden denemek benim için sorunu çözdü.


1

Benim durumumda, almaya devam ettim

assets/ElipseThree.png: needs update
You must edit all merge conflicts and then
mark them as resolved using git add

Bu dosyaları dizinimde buldum, ancak mevcut şubemde yeniden adlandırılmışlardı. Düzeltmek için koştum

$ git mv assets/ElipseThree.png assets/elipseThree.png
$ git add assets/elipseHalfFull.png 
$ git rebase --continue

ve devam etmeme izin verdi

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.