“Taahhüt için yapılmayan değişiklikler” ne anlama geliyor?


239

Eğer dosyaları izlemek istiyorum eğer düşündüm git add [files you want to track]

Mesajları neden aldığımı bilmiyorum Changes not staged for commit.

Bu dosyalar sahnelemediyse, gitbana bu dosyaların Untrackedböyle olduğunu göstermemeli

resim açıklamasını buraya girin

Tek yaptığım developşubeden yeni bir özellik yaratmak ve feature/change_excel_formatşubede çalışmaktı

Bu dosyaların stageddurumunun olması gerektiğini düşündüm ,

Ama git statusbana söylediChanges not staged for commit

resim açıklamasını buraya girin

Kısaca için, sadece GIT'de 3 aşama vardır biliyor untracked, staged, committed için sahne neydi, herhangi biri bana söyleyebilirChanges not staged for commit resim açıklamasını buraya girin

Yani dosyayı değiştirirsem a (zaten repoda)

ve yazın git st, git bana söylerChanges not staged for commit

eğer ben git ao zaman dosya aiçerisindeyimstaged status

Ben modifiye eğer file aşimdi, iki statüsünü olacak file aiçinde gitsağ?

Bu yüzden staged ataahhütte not stage abulunmaya mı yoksa aşamalandırılmaya mı karar vermeliyim, ve sonra önceki aşama file aatılacak mı?

resim açıklamasını buraya girin


3
bu iletiyi alırsanız ve bu dosyanın (a) işlemesi gerekiyorsa, siz add add
Sadee

Yanıtlar:


325

depoda bulunan bir dosyayı değiştirdiğinizde, hazırlanmasını istiyorsanız git addyeniden dosyaya sahip olmanız gerekir .

Bu, son işlemden bu yana yaptığınız değişikliklerin yalnızca bir alt kümesini işlemenize olanak tanır. Örneğin, dosya a, dosya bve dosyanız olduğunu varsayalım c. Dosya ave dosyayı değiştirirsiniz, bancak değişiklikler doğada çok farklıdır ve hepsinin tek bir işlemde olmasını istemezsiniz. Sorun

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

Bir yan not olarak, her şeyi taahhüt etmek istiyorsanız sadece yazabilirsiniz

git commit -a

Umarım yardımcı olur.


1
Yani, eğer bu dosyalar repoda alreday ise. ve ben onları değiştirdim, git commit THEMdoğrudan eklemeden de yapabilirim , değil mi?
newBike

1
elbette. Ve bu durumda, farklı dosyalardaki aşamalı değişikliklerin varlığına bakılmaksızın yalnızca listelenen dosyalar işlenir.
Stefano Falasca

1
Ben de aynı sorunu var ama benim sorunum da izlenmeyen dosyaların alt modül nedeniyle ilgiliydi. Yani benim alt dizinde de git ile tüm değişiklikleri eklemek ve sorun gitti.
elia

1
Zaten yaptım git clean -fdve hala alıyorum. Tüm değişikliklerden kurtulmak istiyorum. Başka ne yapmalıyım?
Bal

3
git commit -aher şeyi işlemiyor, sadece güncellenmiş dosyaları değil, yenilerini değil ...
Martin

62

Onları sahneye koymak için git add komutunu kullanmanız gerekir, aksi takdirde işlemezler. Yapmak istediğiniz değişikliklerin hangileri olduğunu git'e bildirir.

git add -u :/değiştirilen tüm dosya değişikliklerini sahneye git add * :/ekler değiştirilen ve yeni dosyaları (gitignore'ed olmayan) sahneye ekler


2
Bu cevap yukarıdaki cevaba kıyasla açık ve özlü, bu yüzden seviyorum. ;)
oaxacamatt

13

Git'in size söylemesinin başka bir yolu da:

Hey, bazı değişiklikler yaptığınızı görüyorum, ancak geçmişime sayfa yazdığınızda, bu değişikliklerin bu sayfalarda olmayacağını unutmayın.

Dosyaları açıkça değiştirmezseniz git add(ve bu mantıklıysa) değişiklikler yapılmaz .

Yani siz yaptığınızda git commit, bu değişiklikler sahnelenmediği için eklenmez. Onları taahhüt etmek istiyorsanız, önce onları sahnelemelisiniz (yani. git add).


2
Ama referans verdiği dosyayı değiştirmedim
Eoin

1
Bu davranışın tam olarak nasıl mantıklı olduğunu anlamıyorum. Git'e yeniden bir dosya oluşturduğumda yaparak bir dosyayı izlemesini add .söylediysem ve dosyada değişiklikler yaptığımı algılayabilirse, her taahhütte bulunduğumda neden dosyaları açıkça eklemem gerekiyor? Sadece bir dosyada değişiklik yapmak için add, commit ve push . Arasındaki sınır commitve itme arasındaki sınır, bana mantıklı addve commitgülünç gereksiz görünüyor.
Prometheus

1
@Hashim Katılıyorum, gerçekten mantığı anlamıyorum.
Herman Toothrot

6

Aşağıdaki adımları takip et:

1- git stash
2- git eklenti.
3- git commit -m "taahhüt mesajınız"


5
git stash tüm değişiklikleri sildi, orada 10 saat çalışma vardı :(
viniciussvl

13
"git stash" kullandıysanız, bu değişiklikleri geri almak için "geçici bir yere" koyarsanız, sadece "geçici bir yer" den değişikliğinizi almak için "git stash pop" yazın
Cyrus Zei

12
@Viniciussvl ve Cyrus yorumunu okuyana kadar git stash'ı KULLANMAYIN
eski püskü

1
Bu durumda neden git stash'ı kullanayım?
Tobias Kaufmann

4

Yeni bir dosya değişikliği kaydettiğinizi varsayalım. (örneğin navbar.component.html)

Çalıştırmak:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

Bu dosya için bu değişiklikleri yüklemek istiyorsanız, çalıştırmanız gerekir:

git add src/app/components/shared/navbar/navbar.component.html

Ve sonra:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

Ve sonra:

git push origin [your branch name, usually "master"]

-------------------------------------------------- -------------

Veya tüm değişikliklerinizi (birden fazla / tüm dosyalar) yüklemek istiyorsanız:

git commit -a

Bu da "Lütfen değişiklikleriniz için tamamlama mesajını girin" ifadesi görünür.

  • Mesajsız taahhütte bulunursanız bu mesajı görürsünüz (-m)
  • İki adımda çıkabilirsiniz:
  • 1 A. Taahhüt ile ileriye gitmek için çok satırlı bir mesaj yazın.
  • 1.b. Taahhüdü iptal etmek için boş bırakın.
    1. "Esc" tuşuna basın, sonra ": wq" yazın ve seçiminizi kaydetmek için enter tuşuna basın. Viyola!

Ve sonra:

git push

Ve Viola!


2
Yukarıda söylediğim gibi: git commit -atüm değişiklikleri yüklemez, yeni dosyaları içermez. Yalnızca varolan dosyalar için güncellemeleri yapar.
Martin

3

İnt git bash adlı kişiyi takip etmeyi deneyin

1.git add -u :/

2.git commit -m "your commit message"

  1. git push -u origin master

Not: repoyu başlatmadıysanız.

Her şeyden önce

git init 

ve yukarıda belirtilen adımları sırayla uygulayın. Bu benim için çalıştı


Bu sorun benim için, yerel depomdan bir dosyayı silemediğim ve yerel depodan uzak ana şubeye gönderemediğim bir çakışmada işe yaradı.
Siwoku Adeola

1

onlar taahhüt için eklenmez anlamına gelir git add komut dosyaları / excel_parser.py ve onları sahne almak için seviyor gerekir anlamına gelir .. git durumu yaptığınızda aşamalı olduklarında sahnelenecek ve git taahhüt onları taahhüt edecek

ağaçtaki tüm dosyaları otomatik olarak sahne alacak ve işleyecek olan command -a -m "all checkin" i kullanabilirsiniz


1

Kodunuza yeni bir dosya eklediğinizde ve şimdi kodu hazırlamadan (eklemeden) yürütmeye çalıştığınızda bu hatayı görebilirsiniz.

Bunun üstesinden gelmek için, önce git add ( git add your_file_name.py) öğesini kullanarak ve ardından değişiklikleri ( git commit -m "Rename Files" -m "Sample script to rename files as you like") gerçekleştirerek dosyayı ekleyebilirsiniz.


1

Yukarıdaki tüm yanıtları okudum ve yeni güncelleme ve master dosyaları değiştirir iyi çalışır terminal aşağıdaki adımları denedim.

1) git ekleyin. 2) git commit -m "mesajınız" 3) git push origin master

Umarım bu sana yardımcı olur.



-7

Kaldırmak dir/.../.git

benim için çalışıyor.


cevabınızın sizin için neden veya nasıl çalıştığına dair arka plan bilgisi veya öngörü gerekiyor.
Joshua K

Olduğu gibi, cevap soruyu desteklemez. Lütfen daha fazla bilgi değiştirmeyi veya eklemeyi düşünün.
Francisco Maria Calisto
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.