Git द्वारा एक नई शाखा के लिए मास्टर में अप्रकाशित परिवर्तन लाना


जवाबों:


151

आप बस परीक्षण शाखा को चेकआउट कर सकते हैं और फिर प्रतिबद्ध कर सकते हैं। जब आप किसी अन्य शाखा में जाते हैं तो आप अपने अनपेक्षित परिवर्तन नहीं खोते हैं।

मान लें कि आप मास्टर शाखा में हैं:

git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"

मैं वास्तव में हटाए गए फ़ाइलों के बारे में निश्चित नहीं हूं, लेकिन मुझे लगता है कि जब आप उपयोग करते हैं तो वे शामिल नहीं होते हैं git add .


12
कभी-कभी चेकआउट विफल हो जाएगा क्योंकि आपका परिवर्तन उस शाखा के साथ संघर्ष करता है। आप मर्ज करने के लिए चेकआउट-एम की कोशिश कर सकते हैं।
Jouni लालकृष्ण Seppänen

2
मैंने यह कोशिश की, लेकिन मुझे एक त्रुटि मिली: त्रुटि: निम्नलिखित फ़ाइलों के लिए आपके स्थानीय परिवर्तन चेकआउट द्वारा अधिलेखित हो जाएंगे। कृपया, अपने बदलाव करें या शाखाओं को बदलने से पहले उन्हें रोकें।
ishwr

जबकि यह काम करेगा, जो उत्तर कहता है कि स्लैश का उपयोग करना पसंद किया जाना चाहिए, आईएमओ। शायद सिर्फ व्यक्तिगत पसंद, लेकिन यह एक क्लीनर वर्कफ़्लो है, तार्किक रूप से और STASH का परिचय देता है जो एक उपयोगी कमांड है।
पैट्रिक

विकल्प "बी" गायब है, जैसा कि शीर्षक बताता है कि प्रश्न "नई" शाखा से संबंधित है।
गुंट्रम

195

इसके अलावा आप एक नई शाखा बना सकते हैं और उस पर स्विच कर सकते हैं:

git checkout -b new_branch
git add .

मैं हर समय इसका उपयोग करता हूं क्योंकि मैं हमेशा एक नई शाखा शुरू करना भूल जाता हूं इससे पहले कि मैं संपादन कोड शुरू कर दूं।


3
@jouni के रूप में एक ही मुद्दा अन्य उत्तर के लिए नोट किया गया - यदि आप मूल परिवर्तनों के साथ अतिरिक्त परिवर्तन संघर्ष करते हैं, तो आप शाखा को वापस मास्टर में विलय करने में कठिनाई में पड़ सकते हैं। IMO यह थ्रेड बेहतर तरीके से प्रश्न का उत्तर देता है: stackoverflow.com/questions/556923/…
jpw

लघु, मधुर और आश्वस्त ... "मैं हर समय इसका उपयोग करता हूं ..."
atο andMεδιϲ

1
New_branch में कमिट करना न भूलें। यदि आप मास्टर शाखा में वापस जाते हैं और परिवर्तित फ़ाइलों को वापस करते हैं, तो आप उन्हें new_branch में भी खो देंगे।
पेट्र्सिन

36

सिर्फ गिट स्टैश का इस्तेमाल क्यों नहीं। मुझे लगता है कि यह कॉपी-एंड-पेस्ट की तरह अधिक सहज है।

$ git branch
  develop
* master
  feature1
  TEST
$

आपकी वर्तमान शाखा में कुछ फाइलें हैं जिन्हें आप स्थानांतरित करना चाहते हैं।

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#      modified:   awesome.py
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   linez.py
#
$
$ git stash
Saved working directory and index state \
  "WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$

दूसरी शाखा में जाएं।

$ git checkout TEST

और आवेदन करें

$ git stash apply
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   awesome.py
#      modified:   linez.py
#

मुझे भी पसंद है git stashक्योंकि मैं उपयोग करता हूं git flow, जो शिकायत करता है कि आप अपनी कार्यशील निर्देशिका में अभी भी परिवर्तन होने के दौरान एक सुविधा शाखा समाप्त करना चाहते हैं ।

@ मायके बेथानी की तरह, यह मेरे लिए हर समय होता है क्योंकि मैं एक नई समस्या पर काम करता हूं जबकि यह भूल जाता हूं कि मैं अभी भी दूसरी शाखा पर हूं। आप कर सकते हैं तो भी छिपा सकते अपने काम, git flow feature finish...है, और git stash applyनया करने के लिए git flow feature start ...शाखा।


2
git stashबिना किसी परिवर्तन के निपटने का मेरा पसंदीदा तरीका है। यह निश्चित रूप से एक सहज विधि है जब आप इसे कट और पेस्ट के रूप में सोचते हैं।
मैथ्यू मिशेल

यह मेरे लिए एक अच्छा तरीका है। यह एक समस्या के बिना काम किया।
यूनुस नेदिम मेहेल

नहीं पता था कि आप ऐसा कर सकते हैं और यह अच्छी तरह से काम करता है। अन्य तरीकों की तुलना में थोड़ा अधिक सहज महसूस करता है।
ग्लॉकोन

मुझे लगता है कि गिट चेकआउट का उपयोग करने और फिर जोड़ने के बजाय यह अधिक पेशेवर तरीका है। मुझे लगता है कि आपका जवाब 100+ वोट होना चाहिए।
मटरू अलेक्जेंडर

1
@ OαrΚhικgit stash --include-untracked
2Toad

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.