2012-03-28 12 views
22

क्या जीआईटी में स्थानीय/रिमोट रिपोजिटरी w.r.t में सभी नई/हटाए गए/संशोधित निर्देशिका/फ़ाइलों की सूची प्राप्त करने का कोई तरीका है?नई/संशोधित/हटाई गई फ़ाइलों की जीआईटी सूची

+5

'गिट स्थिति 'ऐसा लगता है। – Blender

उत्तर

7

मुझे यकीन नहीं है कि आप एक दूसरे के संबंध में क्या मतलब रखते हैं, लेकिन यदि आप एक व्यक्तिगत लिस्टिंग (उदा। सभी संशोधित फाइलें) चाहते हैं तो आप दाएं झंडे के साथ git ls-files का उपयोग कर सकते हैं (संशोधित फ़ाइलों के लिए यह -m है)। यदि आप इस जानकारी को एक बार में चाहते हैं, तो आप स्थिति के स्क्रिप्ट-पार्सेबल आउटपुट प्राप्त करने के लिए git status --porcelain का उपयोग कर सकते हैं।

+0

गिट स्थिति नई निर्देशिका/फ़ाइलों को सूचीबद्ध नहीं करती है जो रिमोट रेपो में जोड़े गए हैं। क्या यह ? – Jean

+0

@alertjean: "नया" से आपका क्या मतलब है? क्या वे अनचाहे हैं? क्या वे जोड़े गए हैं लेकिन प्रतिबद्ध नहीं हैं? वे क्या हैं? –

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। अब मैं कर सकता हूँ 'geany $ (git ls-files -m)' – mwfearnley

9

क्या आप शायद चाहते हैं की तरह कुछ है:

git fetch  # update what you know about the remote repo 
git diff --name-status master origin/master 

लेकिन यह बताने के लिए वास्तव में क्या शाखाओं आप अपने प्रश्न से diff करना चाहते हैं बहुत मुश्किल है।

7

एक तरह से यह करने के लिए whatchanged कमांड के साथ है:

$ git whatchanged 

इससे पता चलता है जिसके लिए प्रत्येक पेड़ में प्रतिबद्ध और साथ ही विशेष को देखने के लिए इस्तेमाल किया जा सकता बदल फ़ाइलें। git help whatchanged

23

इन फ़ाइल सूची का सबसे अच्छा तरीका पर एक नजर डालें Git स्थिति --porcelain

उपयोग कर रहा है उदाहरण के लिए: पहले हटाए गए फ़ाइलें निकालने के लिए:

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm 
+0

अंत में अंतिम पाइप को हटाने का तरीका यह जानने का एक अच्छा तरीका है कि कौन सी फाइलें हटा दी गई हैं। सहायक यदि आपके पास बहुत लंबी गिट स्थिति है और किसी विशेष स्थिति पर फ़िल्टर करना चाहते हैं। – IanVS

5

उपयोग सूखी रन (-n) git add का विकल्प:

git add -A -n

+0

yup, वह मैं चाहता था! – Doug

1

आदेश 01 के साथ प्रयोग

टैग के साथ उदाहरण:

git diff v1.0.1 v1.0.2 --name-status 

प्रतिबद्ध के साथ उदाहरण:

git diff b79810fc4d be69e41d1c --name-status 

यह उनकी स्थितियों के साथ सभी अद्यतन की गई फ़ाइलें सूची जाएगा: M - संशोधित D - नष्ट कर दिया A - जोड़ा

0

सिर्फ नाम और वर्तमान में बदल फाइलों की स्थिति दाखिल हो तो आप बस कर सकते हैं:

git diff --name-status

आप इस तरह नंगे उत्पादन प्राप्त होगा:

M  a.txt 
M  b.txt 

अब, पाइप cut के उत्पादन को निकालने के लिए दूसरे स्तंभ:

git diff --name-status | cut -f2

तो फिर तुम सिर्फ फ़ाइल नाम होगा:

a.txt 
b.txt 
संबंधित मुद्दे