Nasıl bir git alt sabit --sıfırlamak için?
GÜNCELLEMEBu sezgisel Gıt itibariyle 1.8.3, my own answer daha fazla çalışacak.
Aşağıdaki kullanma durumu hayal edin: Git benim çalışma ağaç, diğer tüm alt dizinlerinin olduğu gibi bıraktı. belirli bir alt dizinindeki tüm değişiklikleri kurtulmak istiyorum
git checkout .
ama git checkout . adds directories excluded by sparse checkout yapabilirimOrada
git reset --hard
ama benden bir alt dizin için izin vermiyor:> git reset --hard . fatal: Cannot do hard reset with paths.
-Yama tersine mevcut durumu kullanarak
git diff subdir | patch -p1 -R
, ama bunu yapmak oldukça tuhaf bir yol oldu.
Bu operasyon için uygun bir Git komutu nedir?
Aşağıdaki komut, bir sorunu göstermektedir. How to make files
yorum geçerli komut-aşağıya doğru komut Dosya Ekle geri seyrek checkout tarafından dışlanmış olması gerekiyordu a/c/ac
. Unutmayınyokaçıkça a/a
a/b
, ben geri istiyorum "" a
ve her şeyi aşağıda geri istiyorum. biliyorum sadeceEDİTVe ben de "" b
ya da diğer dizinler a
ile aynı seviyede bulunur bilmiyorum.
#!/bin/sh
rm -rf repo; git init repo; cd repo
for f in a b; do
for g in a b c; do
mkdir -p $f/$g
touch $f/$g/$f$g
git add $f/$g
git commit -m "added $f/$g"
done
done
git config core.sparsecheckout true
echo a/a > .git/info/sparse-checkout
echo a/b >> .git/info/sparse-checkout
echo b/a >> .git/info/sparse-checkout
git read-tree -m -u HEAD
echo "After read-tree:"
find * -type f
rm a/a/aa
rm a/b/ab
echo >> b/a/ba
echo "After modifying:"
find * -type f
git status
# How to make files a/* reappear without changing b and without recreating a/c?
git checkout -- a
echo "After checkout:"
git status
find * -type f
CEVAP
Not (Dan Fabulich commented):
git checkout -- <path>
sabit sıfırlama yapmaz: içeriğini aşamalı çalışma ile ağaç içeriğini değiştirir.git checkout HEAD -- <path>
yol için sert bir sıfırlama, dizin veHEAD
sürümü ile çalışan ağaç hem işlemek yerine geliyor.
Ajedi32 Her iki kontrol formlarını tarafından answered gibihedef numarası silinmiş olan dosyaları kaldırmak yok.
Eğer KAFASINA bulunmayan çalışma ağacında ekstra dosyalar varsa, git checkout HEAD -- <path>
bunları kaldırmaz.
Ama bu çıkış da belirtildiği gibi git update-index --skip-worktree
(Bu dizinler için görmezden geliyorsun), saygın "Why do excluded files keep reappearing in my git sparse checkout?".
Nasıl olmayan sabit bir referans geçic...
Başlatılmamış sabit Komisyon düzeltmek...
Nasıl sabit bir alan yaratmak için esn...
Nasıl başka bir değişen bir değişken s...
Nasıl Gıt nesneleri sabit disk hatası ...