--Seğiştir-değiştirilmemiş olarak işaretlenmiş dosyaların bir listesini alabilir miyim?


325

Ne olarak işaretledim --assume-unchanged? Bu seçeneği kullanarak neleri gizlediğimi öğrenmenin bir yolu var mı?

Ben .git/dizini kazdık ve beklediğim gibi görünen bir şey görmüyorum, ama bir yerde olmalı. Birkaç hafta önce bu şekilde işaretlediğim şeyi unuttum ve şimdi gelecekteki geliştiriciler için bu ayrıntıları belgelemem gerekiyor.

Yanıtlar:


449

Kullanabilirsiniz git ls-files -v. Yazdırılan karakter küçük harfli ise, dosya varsayılmamış olarak işaretlenir.

Yalnızca değiştirilmemiş dosyaları yazdırmak için:

git ls-files -v | grep '^[[:lower:]]'

Tembel programcınızı kucaklamak için, bunu bir git takma adına dönüştürün . .gitconfigBu snippet'i eklemek için dosyanızı düzenleyin:

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

Şimdi yazmak git ignoredsize şöyle çıktı verecektir:

h path/to/ignored.file
h another/ignored.file

42
git ls-dosya -v | grep ^ [az]
Matt R

17
İşletim sistemimin garip bir harmanlama ayarı var, bu yüzden Matt'in komutu benim için çalışmadı. İşte [alias]bölümümün altına eklediklerim .gitconfig:ignored = !git ls-files -v | grep "^[[:lower:]]"
Abe Voelker

15
[Az] 'nin çalışmamasının nedeni kabuğun bir joker karakter olarak genişlemesi; geçerli dizin bu kalıpla eşleşen bir dosya içeriyorsa (örn. tek bir küçük harf), bu dosyanın genişletilmesi dosyanın adıdır. Tırnak işareti eklemeyi deneyin, örn. "[Az]"
DomQ

7
git ls-dosya -v | grep -e "^ [az]"
Amir Ali Akbari

12
Önerilen takma adlar, geçerli dizinde ve altındaki değişmeyen dosyaları bulmak için çalışır. Depodaki "varsayım değiştirilmemiş" dosyaların bir listesini istiyorsanız, ihtiyacınız olacakgit ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
Trebor Rude 15:13

65

Bir Astar

git ls-files -v | grep "^[a-z]"

Takma Ad Kullan

IMHO, git hiddenşu şekilde işaretlenmiş dosyalar için daha iyidir --assume-unchanged:

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

İçinde bulunduğum ilgili takma adların listesi ~/.gitconfig:

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

Alt dizinlerde ve destek bağımsız değişkenlerinde çalışmasını sağlamak için :

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

Örneğin:

 # cd target
 # git ignored classes

Dosya Durumu Hakkında

Benim için en gizli dosya bayrakla işaretlenmiştir h, ancak aslında el kitabına göre birkaç bayrak daha vardır git-ls-files-v:

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

Hakkında git ls-files-t:

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
Hatırlanması kolay takma adlar :) Teşekkürler
PlagueHammer

1
İşte daha esnek değişkenler: hidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"ve ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f". Bu, örneğin, git ignored -- PATH1 PATH2yalnızca belirli yollardaki yok sayılan dosyaları listelemeye izin verir (çok sayıda yok sayılan dosya olduğunda yararlıdır).
sls

Takma ad için teşekkür ederiz
MOHRE

22

Bu komut benim için daha tutarlı çalışıyor. Yalnızca 'varsayılmadan değiştirildi' olarak listelenen dosyaları yazdırır.

git ls-files -v|grep "^h"

Bunu farklı ortamlarda birçok kez kullandım ve mükemmel çalışıyor.


5
Windows komut isteminde grep "^h"tek tırnak yerine kullanın
beautifulcoder

7

Select-String \ sls kullanan PowerShell çözümü

git ls-files -v | sls -pattern ^h -casesensitive

3

Findstr kullanarak Windows komut satırı çözümü :

git ls-files -v | findstr /B h
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.