'Git kesinliği' neden değişiklikleri kaydetmiyor?


251

Ben böyle yaptım git commit -m "message":

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Ama daha sonra, bunu yaptığımda git statusaynı değiştirilmiş dosyaları gösterir:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Neyi yanlış yapıyorum?


16
git commit -am "save arezzo files"Tüm değişiklikleri otomatik olarak eklemek için kullanın (wrt .gitignore). Sadece belirli dosyaları / dizinleri eklemek isteyebilirsiniz:git add file.src
mbx

Yanıtlar:


400

Mesajın dediği gibi:

taahhütte değişiklik yapılmadı ("git add" ve / veya "git commit -a" kullanın)

Git, dosyaların işlenmeden önce eklenmesi gereken bir "hazırlama alanı" na sahiptir, buradan bir açıklama okuyabilirsiniz .


Özel örneğiniz için şunları kullanabilirsiniz:

git commit -am "save arezzo files"

( abayraklardaki ekstralara dikkat edin , aynı zamanda yazılabilir git commit -a -m "message"- her ikisi de aynı şeyi yapar)

Alternatif olarak, işleme ne eklediğiniz konusunda daha seçici olmak istiyorsanız , hazırlama alanına uygun dosyaları eklemek için git add komutunu ve eklenecek olanı önizlemek için git durumunu kullanırsınız (dikkat etmeyi unutmayın) kullanılan ifadeler).

Git'i nasıl kullanacağınıza ilişkin genel belgeleri ve öğreticileri, dosya hazırlama / ekleme kavramı hakkında daha fazla ayrıntı verecek olan git belgeleri sayfasında da bulabilirsiniz .


Bilmeniz gereken diğer bir şey etkileşimli evrelemedir - bu , hazırlama alanına bir dosyanın bölümlerini eklemenizi sağlar , bu nedenle üç farklı kod değişikliği yaptıysanız (ilgili ancak farklı işlevler için), değiştirir ve her parçayı sırayla ekler / taahhüt eder. Bunun gibi daha küçük özel taahhütlere sahip olmak yardımcı olabilir.


@PeterBoughton, "etkileşimli ekleme" yerine "etkileşimli ekleme" anlamına mı geliyordu?
djb

3
Hayır, etkileşimli ekleme demek istedim.
Peter Boughton

2
Yerel depo, kodu uzak depoya göndermeden önce bir tür hazırlama alanıdır. Değişiklikleri gerçekleştirmeden önce neden başka bir "katman" eklemelisiniz, biraz fazla karmaşık değil mi? Gitmek için yeniyim ama% 99,99 geliştiricilerin her zaman taahhüt -am kullandıklarını düşünüyorum çünkü değişiklikler yerel ortamlarının dışına çıkmıyor.
PawelRoman

2
Sanırım sadece bununla karşılaştım çünkü IDE'm için benimle ilgilenmeye alışkınım. Neden gerekli bir adım olduğundan da emin değilim, ama sonra yine gitmiyorum hakkında çok şey var ... Yani git ...
trpt4him

49

Değişiklikleri eklemediniz. Ya özellikle

git add filename1 filename2

veya tüm değişiklikleri ekleyin (projenin kök yolundan)

git add .

veya işlem -ayaparken stenoyu kullanın :

git commit -a -m "message".

Ayrıca, kullanıcıları etkileşimli eklemeler kullanmaya şiddetle teşvik ediyorum. Özellikle kolayca tersine çevrilebilir küçük küçük taahhütler yapmaya çalışırken.
jer

40

Yapmalısın:

git commit . -m "save arezzo files"

4
Bu OP'nin sorusuna doğru cevap gibi görünüyor. "Eklemek" istemedi, değiştirilmiş olanı taahhüt etmek istedi.
VectorVortec

8

Git kaynak kontrolü altında olan küçük bir alt projeyi başka bir projeye kopyaladım ve .git klasörünü silmeyi unuttum. İşlemeye gittiğimde yukarıdakiyle aynı mesajı aldım ve .gitklasörü silene kadar silemedim.

Biraz aptalca, ancak işlem yapmayan klasörün altında bir .git klasörünüz olmadığını kontrol etmeye değer.


7

Şunları yapabilirsiniz:

git add -u -n

Hangi dosyaları değiştirdiğinizi ve ekleneceğinizi kontrol etmek için (kuru çalıştırma: -n seçeneği) ve ardından

git add -u

Yalnızca değiştirilmiş dosyalar eklemek için


4

Ben yaptık görünmesini bu sorunu bulmak git add .bir alt dizinde aşağıda benim nerede .gitignoredosya ömürleri (Depodaki ev dizini, tabiri caizse). Dizinleri en üstteki dizine değiştirip çalıştırmayı ve git add .ardından çalıştırmayı deneyin git commit -m "my commit message".


4

Belki bariz bir şey, ama ...

Dizinde sorun yaşıyorsanız git-gui komutunu kullanın . Dizinin (hazırlama alanı) gerçekten nasıl çalıştığını çok iyi görebilirsiniz.

Dizini anlamama yardımcı olan başka bir bilgi kaynağı da Scott Chacons'ın "Git" sayfa 259 ve ileriye dönük olmasıydı.

Komut satırını kullanmaya başladım çünkü çoğu dokümantasyon sadece ...

Git-gui ve gitk aslında daha hızlı çalışmamı sağlıyor ve örneğin "git pull" gibi kötü alışkanlıklardan kurtuldum ... Şimdi her zaman önce getiriyorum ... Birleştirmeden önce yeni değişikliklerin gerçekte ne olduğunu görün.


3

Bunun olmasının nedeni Git tarafından da izlenen başka bir klasörün içinde Git tarafından zaten izlenen bir klasörünüzün olmasıdır. Örneğin, bir projem vardı ve ona bir alt klasör ekledim. Birini diğerinin içine koymadan önce ikisi de Git tarafından takip ediliyordu. İçini izlemeyi durdurmak için, dosyayı bulun ve Git dosyasını şununla kaldırın:

rm -rf .git

Benim durumumda bir WordPress uygulamam vardı ve içine eklediğim klasör bir temaydı. Bu yüzden tema köküne gitmem ve Git dosyasını kaldırmam gerekiyordu, böylece tüm proje şimdi üst, WordPress uygulaması tarafından izlenecekti.


1

benim durumumda daha fazla dosya varsa ben onları eklemedi proje onları proje klasöründen eklemeye çalıştığınızda 7000 görüntü dosyaları var ama ben görüntü klasörüne gittiğinizde her şey yolunda. Hedef klasörü gözden geçirin ve abows gibi komut verin

git add .
git commit -am "image uploading"
git push origin master

git push origin master Nesneleri numaralandırma: 6574, bitti. Nesneleri sayma:% 100 (6574/6574), bitti. 4 iş parçacığına kadar delta sıkıştırma Nesneleri sıkıştırma:% 100 (6347/6347), bitti. Yazı nesneleri:% 28 (1850/6569), 142.17 MiB | 414.00 KiB / s


0

Bir commit --amendçıkardıktan sonra bile yaptığım bir sorunum vardı git add .ve hala çalışmıyor. Görünüşe göre bazı .vimrcözelleştirmeler yaptım ve editörüm düzgün çalışmıyor. vimDoğru hataları döndürmek için bu hataları düzeltmek sorunu çözdü.


0

Aynı hata mesajı ile çok benzer bir sorun yaşadım. "Değişiklikler taahhüt için hazırlanmadı", ancak bir fark yaptığımda farklılıklar gösteriyor. Sonunda bir süre önce bir dizin davasını değiştirdiğimi anladım. ex. "PostgeSQL" e "postgresql" yazın Şimdi hatırladığım gibi git bazen eski vaka dizininde bir iki dosya bırakacak. Ardından, yeni vakanın yeni bir sürümünü sunacaksınız.

Böylece git hangisine güveneceğini bilmiyor. Bunu çözmek için github'un web sitesine gitmem gerekiyordu. Böylece her iki durumu da görüntüleyebilirsiniz. Yanlış kasa dizinindeki tüm dosyaları silmeniz gerekir. Doğru sürümün kapalı veya doğru kasa dizininde kayıtlı olduğundan emin olun.

Eski vaka dizinindeki tüm dosyaları sildikten sonra, tüm dizin kaybolacaktır. Sonra bir taahhütte bulunun.

Bu noktada, yerel bilgisayarınızda bir Çekme yapabilmeniz ve çakışmaları artık görmemeniz gerekir. Böylece tekrar iş yapabilmek. :)


0

diğer git-Deposundan klonlanan bir alt klasörünüz varsa, önce $ .git $ dosyasını child-Repository'den kaldırmanız gerekir: rm -rf .git bundan sonra üst klasöre geçebilir ve kullanabilirsiniz git add -A.

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.