2011-05-02 12 views
35

में एक निर्देशिका में परिवर्तन करता है मै मैक 10.6.6 पर गिट 1.7.4.1 का उपयोग कर रहा हूं। कमांड लाइन से, मैं केवल एक ही निर्देशिका में परिवर्तन कैसे करूं? मैं ऐसा करके निर्देशिका कहा:कमिट केवल गिट

git add my-dir 

लेकिन

git commit -a 

कर मेरी रेपो में सभी परिवर्तनों की एक सूची सामने आती है, और मैं केवल करने और my-dir से परिवर्तन पुश करने के लिए चाहते हैं।

उत्तर

28

-a विकल्प छोड़ दें। फिर git केवल उन फ़ाइलों को ही प्रतिबद्ध करेगा जिन्हें आपने git add के साथ मंचित किया था।

आप git commit my-dir के साथ स्टेजिंग के बिना निर्देशिका करने का भी प्रयास कर सकते हैं।

+0

यदि मैं दूसरी बात करता हूं जो आप कहते हैं (स्टेजिंग के बिना काम करने का प्रयास करें), तो कौन से परिवर्तन किए जाएंगे? –

+0

उस मामले में, @Stefan, "प्रतिबद्धता इंडेक्स में किए गए परिवर्तनों को अनदेखा कर देगी, और इसके बजाय सूचीबद्ध फ़ाइलों की वर्तमान सामग्री को रिकॉर्ड करेगी (जो पहले से ही गिट के लिए जानी जानी चाहिए)" [दस्तावेज़ीकरण] (https: // git-scm.com/docs/git-commit)। –

11

हम्म, विषम। निम्नलिखित काम करना चाहिए। मान लीजिए कि आपके पास कुछ भी नहीं है।

git add my-dir 
git commit -m "Commiting first revision of my-dir folder. Very exciting feature!" 
git push origin master 
+0

मैं वास्तव में आपके प्रश्न को नहीं समझता, लेकिन शायद यह मेरी खुद की गलती है :) मैं अपना जवाब दोबारा लिखता हूं। मुझे आशा है कि यह अधिक संतुष्टि होगी। – ralphtheninja

+0

ठीक है, यह थोड़ा सा स्पष्ट है। मुझे अभी भी नहीं मिलता है कि आप '_yelling_' क्यों हैं जो इसे चाहिए। वास्तव में, यह केवल तभी सही होगा जब आप 'प्रतिबद्ध' के दायरे को सीमित कर लेंगे (क्योंकि आप नहीं जानते कि पहले से और क्या चरणबद्ध है) – sehe

+0

ठीक है, मैं आपका अनुसरण करता हूं। चिल्लाने का मेरा इरादा नहीं था, यह सिर्फ शब्द पर जोर देना था। के साथ बदल दिया जाना चाहिए। और हां, ज़ाहिर है, मैंने माना कि इंडेक्स में और कुछ नहीं जोड़ा गया था। – ralphtheninja

3

बस git add के रूप में आपके द्वारा निर्दिष्ट का उपयोग कर फ़ोल्डर मंच, और एक -a विकल्प के बिना प्रतिबद्ध कार्य करें: git commit -m "Committing stuff"-a विकल्प का मतलब उन सभी फ़ाइलों को प्रतिबद्ध करना है जिन्हें संशोधित किया गया है, भले ही वे चरणबद्ध न हों।

1

आप "स्टेजिंग क्षेत्र" में कोई भी बदलाव करेंगे; आप इन्हें git status के साथ देख सकते हैं।

git commit -a में -a झंडा, आदमी पृष्ठ के अनुसार, मोटे तौर पर "के बारे में मंच सभी फ़ाइलें संशोधित किया गया है या नष्ट कर दिया, लेकिन नहीं नई फ़ाइलें तुमसे कहा नहीं किया है Git" करने के लिए Git बताता है - इस तुम क्या नहीं करना चाहता है

सबक क्या आदेश पंक्ति विकल्प

सुधारने के लिए क्या बारे में पता होना करने के लिए है, पहली बात आप क्या करना चाहते है, How to undo 'git add' before commit? के अनुसार, सभी फाइलों को आप गलती से जोड़ दिया है unstage को commit -a विकल्प के साथ। उस उत्तर के अनुसार, आपको git rm -r --cached . कमांड करना होगा, और अब आपके परिवर्तन अभी भी वहां होना चाहिए, लेकिन कुछ भी चरणबद्ध नहीं है।

अब आप git add my-dir कर सकते हैं जैसा आपने पहले किया था। तो फिर तुम git commit (बिना -a)

43

कर सकते हैं क्यों कोई भी आप बस

git commit -m 'message' -- my-dir 

यह मेरे ओ पी करने के लिए इस्तेमाल नहीं कर रहा है लगता है/मचान क्षेत्र का उपयोग करना पसंद नहीं करता सकते हैं उल्लेख करता है सीधे।यह दृष्टिकोण भी एक बहुत सुरक्षित, आगे संदर्भ के बिना सिफारिश करने के लिए है, क्योंकि संभावना है कि एक defaault (सब कुछ है कि मंचन किया है की)

  • मेरी-निर्देशिका बस की तुलना में अधिक हो जाएंगे प्रतिबद्ध यदि वह पहले से मंचन किया गया था रहे हैं
  • होगा भ्रामक परिणाम जब ओपी स्पष्ट मचान क्षेत्र के प्रबंधन (क्योंकि काम कर पेड़ सूचकांक के साथ सिंक से बाहर मिल गया है सकते हैं)
+1

मेरा मानना ​​है कि मैंने * * उल्लेख किया है - कम से कम इसका हिस्सा जो प्रश्न के लिए प्रासंगिक था। (चाहे प्रतिबद्ध संदेश कमांड लाइन में शामिल किया गया हो या बाद में संकेत दिया गया हो, विषय से अलग मुद्दा है, जो कि बाकी सब कुछ किए बिना एक विशिष्ट निर्देशिका को कैसे प्रतिबद्ध किया जाए।) –

+1

ओह। मुझे याद आया ('-ए' टॉक ने मुझे ट्रैक बंद कर दिया?)। मैं अवचेतन रूप से ** '-' ** टोकन के लिए स्कैन कर सकता हूं। (_oh और प्रतिबद्ध संदेश की बात सिर्फ आदत है:) _) – sehe

3

यह सब करते हैं एक आदेश में करने के लिए इस्तेमाल नहीं कर रहा है:

git commit -- my-dir 
+0

वही [सेहे का जवाब] (/ a/5862894/938111) दो दिन पुराना है और कुछ स्पष्टीकरण प्रदान करता है। वही [user6120452 से उत्तर] (http://stackoverflow.com/a/36247058/938111) उपयोगी विवरण प्रदान करता है। – olibre

3

बेसिक

git add -- ./myfolder 
git commit -m'my comment' -- ./myfolder 

अधिक फ़ाइलों और dirs

git add -- ./myfolder1 ./myfolder2./some/random/file.txt 
git commit -m'cool' -- ./myfolder1 ./myfolder2 ./some/random/file.txt 

मैं Git नंगे रेपो के लिए क्या देख रहा था

git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree add -- ./myfolder 
git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree commit -m'my comment' -- ./myfolder 

रिक्तियों के साथ पथ उद्धृत करने के लिए याद रखें साथ या पागल वर्ण

संबंधित मुद्दे