Örneğin, bir dosyanın olabileceği üç yer vardır: ağaç, dizin ve çalışan kopya. Bir klasöre sadece bir dosya eklediğinizde, dosyayı çalışma kopyasına eklersiniz.
Böyle bir şey yaptığınızda git add file
yaptığınızda dizine ekleyin. Ve taahhüt ettiğinizde, ağaca da eklersiniz.
Git reset'teki üç yaygın bayrağı daha bilmenize yardımcı olacaktır:
git reset [- <mode>
] [ <commit>
]
Bu form mevcut şube başkanı sıfırlar <commit>
ve muhtemelen endeksi (ağacının sıfırlayarak günceller <commit>
) ve çalışma ağaç bağlı<mode>
aşağıdakilerden biri olması gereken :
--soft
Dizin dosyasına veya çalışma ağacına hiç dokunmaz (ancak başlığı <commit>
tüm modlarda olduğu gibi ). Bu, git durumunun belirteceği gibi, değiştirilen tüm dosyalarınızı "Yapılması gereken değişiklikler" olarak bırakır.
--karışık
Dizini sıfırlar ancak çalışma ağacını sıfırlamaz (yani, değiştirilen dosyalar korunur ancak kesinleştirme için işaretlenmez) ve güncellenmeyenleri bildirir. Bu varsayılan eylemdir.
--zor
Dizin ve çalışma ağacını sıfırlar. O zamandan beri çalışma ağacında izlenen dosyalarda yapılan değişiklikler<commit>
atılır.
Şimdi, böyle bir şey git reset HEAD
yaptığınızda - aslında yaptığınız şey git reset HEAD --mixed
, dizini, dosya eklemeye / dizine değişiklikler eklemeye başlamadan önceki durumuna "sıfırlayacaktır" (üzerinden git add
) Bu durumda, çalışma kopyalama ve de dizin (veya evreleme) senkronize edildi, ancak HEAD ve dizinin sıfırlamadan sonra senkronize olmasını sağladınız.
git rm
Öte yandan, bir dosyayı çalışma dizininden ve dizinden kaldırır ve işlem yaptığınızda dosya ağaçtan da kaldırılır. git rm --cached
ancak dosyayı yalnızca dizinden kaldırır ve çalışma kopyanızda tutar. Bu durumun tam tersidir. git add file
Bu durumda, HEAD ve çalışmadan farklı olması için indeks yaptınız, HEAD'ın dosyanın daha önce işlenmiş versiyonuna sahip olması, çalışma kopyasının HEAD dosyayı ve dizinden kaldırdınız. Şimdi bir taahhüt, dizin ve ağacı senkronize eder ve dosya kaldırılır.
git rm --cached
git diff
git diff --cached
git status
Untracked