Bazı gitkomutları çalıştırarak ve çıkış kodunu kontrol ederek bir dosyanın izlenip izlenmediğini anlamanın bir yolu var mı ?
Başka bir deyişle: git bir dosyayı mı izliyor?
Bazı gitkomutları çalıştırarak ve çıkış kodunu kontrol ederek bir dosyanın izlenip izlenmediğini anlamanın bir yolu var mı ?
Başka bir deyişle: git bir dosyayı mı izliyor?
Yanıtlar:
Deneyin:
git ls-files --error-unmatch <file name>
dosya izlenmezse 1 ile çıkar
--error-unmatchseçeneği dosya adının önüne koymanız gerekir . Her nasılsa, seçenek yalnızca onu izleyen dosya adlarına uygulanır.
--) sonra görününce, başka bir dosya adı ( --error-unmatchdizin içinde değil) olarak ele alındığı ve hiçbir etkisi olmadığı gibi görünüyor.
git ls-files | grep <PATTERN>? örnek:git ls-files | grep Main.h
Konsolunuzu hata iletileriyle karıştırmak istemiyorsanız,
git ls-files file_name
ve ardından sonucu kontrol edin. Git hiçbir şey döndürmezse, dosya izlenmez. İzlenirse, git dosya yolunu döndürür.
Bir komut dosyasında birleştirmek istiyorsanız bu kullanışlı olur, örneğin PowerShell:
$gitResult = (git ls-files $_) | out-string
if ($gitResult.length -ne 0)
{
## do stuff with the tracked file
}
file_nametam bir eşleşme olması gerekiyor (tam yol + dosya adı), ancak joker karakterlerle kullanılabilir:git ls-files *foo.rb
DÜZENLE
Eğer bash kullanımı Git gerekiyorsa orada --porcelainseçeneği git status:
--porselen
Çıktıya komut dosyaları için sabit, ayrıştırılması kolay bir format verin. Şu anda bu --kısa çıktı ile aynıdır, ancak gelecekte değişmeyeceği garanti edilir ve komut dosyaları için güvenli hale gelir.
Çıktı şöyle görünür:
> git status --porcelain
M starthudson.sh
?? bla
Veya aynı anda yalnızca bir dosya yaparsanız:
> git status --porcelain bla
?? bla
ORİJİNAL
yapmak:
git status
Hangi dosyaların güncellendiğini ve hangilerinin izlenmediğini belirten bir rapor göreceksiniz.
Sen görebilirsiniz bla.shizlenen ve modifiye ve newblaizlenmez:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: bla.sh
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# newbla
no changes added to commit (use "git add" and/or "git commit -a")
git status --porcelainçıktıyı komut dosyasıyla ayrıştırmanız gerekiyorsa, bağlantılı dokümana bir göz atın, diğer bazı yararlı seçenekleri gösterin
git status --porcelain error: unknown option porcelain 'Versiyon 1.6.0 :-)
git statusDosya üzerinde çalışmayı deneyin . Git tarafından izlenmezse bir hata yazdırır
PS$> git status foo.txt
error: pathspec 'foo.txt' did not match any file(s) known to git.
git status trackedfileçıkış kodu 1 (0 yararlı olması bekleniyor) olsun ama çıktı "bana hata:" vermez. Dize çıktısı yerine bir çıkış kodu ayrıştırmak istiyorum.
.gitignore
$ git status notthere:On branch master nothing to commit, working directory clean
"Kötü" bir çıkış kodu veren herhangi bir git komutunu bilmiyorum, ama bunu yapmak için kolay bir yol gibi görünüyor izlenmeyen bir dosya için hiçbir çıkış veren bir git komutu kullanmak gibi görünüyor git-log veya git-ls-files. Bu şekilde gerçekten ayrıştırma yapmak zorunda kalmazsınız, herhangi bir çıktı olup olmadığını görmek için grep gibi başka bir basit yardımcı program üzerinden çalıştırabilirsiniz.
Örneğin,
git-ls-dosyaları test_file.c | grep.
dosya izlenirse sıfır koduyla, dosya izlenmezse çıkış koduyla çıkar.
Özel bir önermek takma sana .gitconfig.
Yapmanız gereken yol:
1) git komutu ile:
git config --global alias.check-file <command>
2) ~/.gitconfigBu satırı diğer ad bölümünde düzenleyin ve ekleyin:
[alias]
check-file = "!f() { if [ $# -eq 0 ]; then echo 'Filename missing!'; else tracked=$(git ls-files ${1}); if [[ -z ${tracked} ]]; then echo 'File not tracked'; else echo 'File tracked'; fi; fi; }; f"
Komut (1) veya kaydedilmiş dosya (2) başlatıldıktan sonra, çalışma alanınızda test edebilirsiniz:
$ git check-file
$ Filename missing
$ git check-file README.md
$ File tracked
$ git check-file foo
$ File not tracked
kullanarak git logbu konuda bilgi verecektir. Dosya git'te izlenirse, komut bazı sonuçlar (günlükler) gösterir. Yoksa boş.
Örneğin, dosya git izlenirse,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc
Author: User <someone@somedomain.com>
Date: Mon Feb 20 07:45:04 2017 -0600
fix eslint indentation errors
....
....
Dosya git izinde değilse,
root@user-ubuntu:~/project-repo-directory# git log src/../somefile.js
root@user-ubuntu:~/project-repo-directory#
Sadece iki sentim:
git ls-files | grep -x relative/path
burada relative/pathkolaylıkla basarak belirlenebilir tabbir otomatik tamamlama kabuk içinde. | wc -l 1 veya 0 çıkış almak için bir ek ekleyin .
grepseçenek eklemeniz gerekir --fixed-strings.