Soru Neden 'git taahhüt' değişiklikimi kaydetmiyor?


yaptım git commit -m "message" bunun gibi:

> 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 sonra, yaptığım zaman git status aynı 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?


232
2017-10-09 15:17


Menşei


kullanım git commit -am "save arezzo files" tüm değişiklikleri otomatik olarak eklemek için (w.r.t. .gitignore). Sadece belirli dosyaları / dirleri eklemek isteyebilirsiniz: git add file.src - mbx
Olası kopya: stackoverflow.com/questions/2419249/...  stackoverflow.com/questions/4571106/git-commit-all-files - mbx


Cevaplar:


Mesajın dediği gibi:

işlemek için herhangi bir değişiklik yapılmadı (“git add” ve / veya “git commit -a”)

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


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

git commit -am "save arezzo files"

(ekstraya dikkat edin a bayraklarda da şu şekilde yazılabilir: git commit -a -m "message" - her ikisi de aynı şeyi yapıyor

Alternatif olarak, ne ekledikleriniz hakkında daha seçici olmak istiyorsanız, git ekle hazırlama alanına uygun dosyaları eklemek için komut ve git durumu Eklenecek olanı önizlemek (kullanılan ifadeye dikkat etmeyi hatırlamak).

Git'i nasıl kullanacağınız için genel belgeleri ve eğiticileri de bulabilirsiniz. git doküman sayfası evreleme / ekleme dosyaları kavramı hakkında daha fazla ayrıntı verecek.


Bilmeye değer bir şey daha etkileşimli evreleme - Bu eklemenizi sağlar bir dosyanın parçaları Aşama alanına, yani üç ayrı kod değişikliği yaptıysanız (ilgili ancak farklı işlevler için), değişiklikleri bölmek ve sırayla her parçayı ekleyerek / işlemek için etkileşimli modu kullanabilirsiniz. Bunun gibi daha küçük özel işlemlere sahip olmak yararlı olabilir.


375
2017-10-09 15:20



@PeterBoughton, "etkileşimli ekleme" yerine "etkileşimli ekleme" demek istediniz mi? - djb
Hayır, etkileşimli ilavesi demek istedim. - Peter Boughton
(Teşekkürler, ayıklamak herkes için 10 ay sürdü utanç) - Peter Boughton
Yerel depo, kodun uzak depoya itilmesinden önce bir hazırlama alanının bir türüdür. Değişiklikleri taahhüt etmeden önce neden başka bir "katman" ekleyelim, biraz fazla karmaşık değil mi? Gitmek için yeniyim, ancak% 99,99 geliştiricinin her zaman bağımlılığı kullandığını hayal etmeliyim, çünkü değişiklikler yerel ortamlarının dışına çıkmıyor. - PawelRoman
Sanırım buna koştum çünkü IDE'ye benim için baktığımda kullanıyorum. Neden gerekli bir adım olduğunu emin değilim, ama sonra tekrar, gitmiyorum hakkında çok şey var ... Yani demek ... - trpt4him


Değişiklikleri siz eklemediniz. Ya bunları özellikle

git add filename1 filename2

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

git add .

ya da kısaltmayı kullan -a taahhüt ederken:

git commit -a -m "message".

46
2017-10-09 15:21



Ayrıca, kullanıcıları etkileşimli eklemeyi kullanmaya teşvik ediyorum. Özellikle de kolayca tersine çevrilebilir küçük güzel işler yapmaya çalışırken. - jer


Yapmalısın:

git commit . -m "save arezzo files"

38
2017-10-09 15:20



+1 Hayat kurtarıcısın! - Miguel
Bu OP'nin sorusuna doğru cevap gibi görünüyor. "Eklemek" istemedi, değiştirilen şeyi işlemek istedi. - VectorVortec


Yapabilirdin:

git add -u -n

Değiştirdiğiniz ve eklenecek dosyaları (kuru çalışma: -n seçeneği) kontrol etmek ve daha sonra

git add -u

Sadece değiştirilmiş dosyalar eklemek için


7
2018-05-22 19:08





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

Bu biraz aptalca, ama işlemek olmayan klasörün altında bir .git klasörünün olmadığını kontrol etmeye değer.


7
2017-07-25 05:34





Yaptığımda bu problemin ortaya çıktığını görüyorum. git add . bir alt dizinde altında nerede benim .gitignore dosya yaşıyor (benim depomuzun ana dizini, yani). Dizinleri değiştirmeyi deneyin. en üstteki dizin ve çalışıyor git add . bunu takiben git commit -m "my commit message".


4
2018-04-15 15:03





Belki bariz bir şey, ama ...

Dizinde sorun varsa, kullanın Git-gui. Endeksin (aşamalandırma alanı) aslında nasıl çalıştığını çok iyi görüyorsunuz.

İndeksi anlamama yardımcı olan bir başka bilgi kaynağı, Scott Chacons "Gitme" sayfa 259 ve ileriye doğru idi.

Komut satırını kullanmaya başladım çünkü çoğu dokümantasyon sadece şunu gösterdi:

Git-gui ve gitk'in daha hızlı çalışmamı sağladığını düşünüyorum ve örneğin "git çekme" gibi kötü alışkanlıklardan kurtuldum ... Şimdi her zaman ilk önce ... Yeni değişikliklerin gerçekten bir araya gelmeden önce ne olduğunu görün.


4
2017-12-11 04:14





Bunun olmasının nedeni Git tarafından Git'in izlediği başka bir klasörde zaten izlenen bir klasörünüz olmasıdır. Örneğin, bir projem vardı ve ona bir alt klasör ekledim. Her ikisi de birini diğerinin içine almadan önce Git tarafından izleniyordu. İçeriği takip etmeyi durdurmak için onu bulun ve Git dosyasını şununla birlikte kaldırın:

rm -rf .git

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


4
2018-03-21 22:05



Bu beni kurtardı - teşekkürler! - Stephen


Yaptığım bir sorun vardı commit --amend bir yayınladıktan sonra bile git add . ve hala çalışmıyordu. Sonunda bazı şeyler yaptım .vimrc özelleştirmeler ve editörüm düzgün çalışmıyordu. Bu hataları düzeltmek vim sorunu çözen doğru kodu döndürür.


0
2018-03-06 21:59