क्या यह बताने का कोई तरीका है कि git
कमांड चलाकर और उसके निकास कोड को जांचकर फ़ाइल को ट्रैक किया जा रहा है या नहीं?यह कैसे बताना है कि फ़ाइल गिट ट्रैक की गई है (खोल निकास कोड द्वारा)?
दूसरे शब्दों में: गिट एक फ़ाइल को ट्रैक कर रहा है?
क्या यह बताने का कोई तरीका है कि git
कमांड चलाकर और उसके निकास कोड को जांचकर फ़ाइल को ट्रैक किया जा रहा है या नहीं?यह कैसे बताना है कि फ़ाइल गिट ट्रैक की गई है (खोल निकास कोड द्वारा)?
दूसरे शब्दों में: गिट एक फ़ाइल को ट्रैक कर रहा है?
कोशिश:
git ls-files --error-unmatch <file name>
, अगर फ़ाइल
कम से कम मेरे पुराने (1.6।0) गिट का संस्करण, आपको त्रुटि प्राप्त करने के लिए फ़ाइल नाम से पहले '--error-unmatch' विकल्प ** डालना होगा। किसी भी तरह विकल्प केवल फाइलनामों पर लागू होता है जो इसका अनुसरण करते हैं। –
दरअसल, समस्या यह प्रतीत होती है कि जीएनयू गेटोपट विकल्प परमिट सक्षम नहीं है, और जब फ़ाइल नाम के बाद दिखाई दे रहा है (या '--' के बाद) '--error-unmatch' को केवल एक अन्य के रूप में माना जाता है (इंडेक्स में नहीं) फ़ाइल नाम, और इसका कोई प्रभाव नहीं है। –
'गिट एलएस-फाइलें | grep
फ़ाइल पर git status
चलाने का प्रयास करें। यह एक त्रुटि प्रिंट होगा अगर यह Git द्वारा ट्रैक नहीं है
PS$> git status foo.txt
error: pathspec 'foo.txt' did not match any file(s) known to git.
वाह। मैं इसे एक निर्देशिका पर चला रहा होगा और ऐसा लगता है कि यह पूरे रेपो की जांच कर रहा था। धन्यवाद। –
दरअसल, अगर मैं 'गिट स्थिति ट्रैकडफाइल' चलाता हूं तो मुझे बाहर निकलने वाला कोड 1 मिलता है (अपेक्षित 0 उपयोगी होने के लिए) लेकिन यह मुझे आउटपुट में "त्रुटि:" नहीं देता है। मैं स्ट्रिंग आउटपुट की तुलना में बाहर निकलने वाले कोड को पार्स करना चाहता हूं। –
मुझे लगता है कि अगर मैं अपनी गिट काम करने वाली प्रतिलिपि में मौजूद फ़ाइल पर गिट स्थिति चलाता हूं लेकिन मुझे .gitignore द्वारा बहिष्कृत किया गया है, तो कोई त्रुटि नहीं उठाई जाती है। (यानी यह उत्तर नहीं करेगा।) – JellicleCat
संपादित
आप बैश से Git का उपयोग करने के --porcelain
विकल्प git status
को वहाँ की जरूरत है:
--porcelain
Give the output in a stable, easy-to-parse format for scripts. Currently this is identical to --short output, but is guaranteed not to change in the future, making it safe for scripts.
आउटपुट की तरह दिखता है यह:
> git status --porcelain
M starthudson.sh
?? bla
या आप एक समय में केवल एक फ़ाइल करते हैं:
> git status --porcelain bla
?? bla
मूल
कार्य करें:
git status
आप रिपोर्ट बताते हुए फ़ाइलें अद्यतन और कौन-से थे जो देखेंगे अनचाहे हैं।
आप bla.sh
देख सकते हैं पर नज़र रखी है और संशोधित और newbla
ट्रैक न होने वाला:
# 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")
क्षमा करें मुझे स्पष्ट होना चाहिए था। स्थिति ठीक है लेकिन मैं पार्स आउटपुट की तुलना में एक्जिट कोड की जांच करूंगा। –
'गिट स्थिति --porcelain' आपका मित्र है यदि आपको स्क्रिप्ट द्वारा आउटपुट को पार्स करने की ज़रूरत है, तो लिंक किए गए दस्तावेज़ पर एक नज़र डालें, यह कुछ अन्य उपयोगी विकल्प दिखाता है – stefanB
हायही, बहुत पुरानी गिट के साथ काम नहीं करता है: 'गिट स्टेटस - एडसेलिन त्रुटि: अज्ञात विकल्प 'पोर्सिलीन' संस्करण 1.6.0 है :-) –
मैं किसी भी Git आदेश है कि एक "बुरा" बाहर निकलें कोड देता है के बारे में पता नहीं है, लेकिन यह एक आसान तरीका की तरह लगता है ऐसा करने के लिए एक गिट कमांड का उपयोग करना होगा जो किसी फ़ाइल के लिए आउटपुट नहीं देता है, जिसे ट्रैक नहीं किया जाता है, जैसे कि गिट-लॉग या गिट-एलएस-फाइलें। इस तरह आपको वास्तव में कोई पार्सिंग नहीं करना है, आप इसे किसी अन्य आउटपुट के माध्यम से चलाने के लिए grep जैसे किसी अन्य सरल उपयोगिता के माध्यम से इसे चला सकते हैं।
उदाहरण के लिए,
git-ls-files test_file.c | grep .
अगर फाइल ट्रैक न होने वाला एक शून्य कोड यदि फ़ाइल ट्रैक किया जाता है, लेकिन एक के बाहर निकलने के कोड के साथ बाहर निकल जाएगा।
आपको त्रुटि संदेश के साथ अपने कंसोल अप अस्त-व्यस्त करे नहीं करना चाहते हैं ट्रैक न होने वाला 1 के साथ बाहर निकल जाएगा आप भी चला सकते हैं
git ls-files file_name
और फिर परिणाम की जांच करें। अगर गिट कुछ भी नहीं देता है, तो फ़ाइल को ट्रैक नहीं किया जाता है। यदि यह ट्रैक किया गया है, तो गिट फ़ाइल पथ वापस कर देगा।
इस काम में आता है, तो आप एक स्क्रिप्ट में यह गठबंधन करने के लिए चाहते हैं, उदाहरण PowerShell के लिए:
$gitResult = (git ls-files $_) | out-string
if ($gitResult.length -ne 0)
{
## do stuff with the tracked file
}
बस मेरे दो सेंट:
git ls-files | grep -x relative/path
जहां relative/path
आसानी से निर्धारित किया जा सकता स्वत: पूर्णता खोल के भीतर tab
दबाकर। 1 या 0 आउटपुट प्राप्त करने के लिए अतिरिक्त | wc -l
जोड़ें।
git log
का उपयोग करके इस बारे में जानकारी दी जाएगी। अगर फ़ाइल गिट में ट्रैक की जाती है तो कमांड कुछ परिणाम दिखाता है (लॉग)। अन्यथा यह खाली है।
उदाहरण के लिए यदि फ़ाइल Git पर नज़र रखी है,
[email protected]:~/project-repo-directory# git log src/../somefile.js
commit ad9180b772d5c64dcd79a6cbb9487bd2ef08cbfc
Author: User <[email protected]>
Date: Mon Feb 20 07:45:04 2017 -0600
fix eslint indentation errors
....
....
फ़ाइल पर नज़र रखी Git नहीं है, तो
[email protected]:~/project-repo-directory# git log src/../somefile.js
[email protected]:~/project-repo-directory#
मैं एक कस्टम का सुझाव उर्फ आप .gitconfig
पर।
1) Git आदेश के साथ:
git config --global alias.check-file <command>
2) संपादन ~/.gitconfig
और उर्फ खंड पर इस पंक्ति जोड़ें:
आप ऐसा करने के लिए जिस तरह से करने के लिए है
[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"
एक बार आदेश का शुभारंभ किया (1) या सहेजी गई फ़ाइल (2), आपके वर्कस्पेस पर आप इसका परीक्षण कर सकते हैं:
$ git check-file
$ Filename missing
$ git check-file README.md
$ File tracked
$ git check-file foo
$ File not tracked
मुझे लगता है कि बिंदु यह है कि फ़ाइल को ट्रैक या अनचाहे के रूप में तय करने का मानदंड क्या है। खोजने के लिए किसी प्रकार का ट्रैक किया गया फ़ाइल संग्रह होना चाहिए। – smwikipedia