मैं git स्‍टैश कैसे साझा कर सकता हूं?


32

वहाँ एक रास्ता है शेयर को साझा करने के लिए?

मैं कई मशीनों पर काम करता हूं, और अक्सर अपनी वर्तमान कार्यशील स्थिति को एक से दूसरे में ले जाने में सक्षम होना चाहता हूं।

मैं एक ऐसे रास्ते की तलाश में हूं जिसे मैं एक क्लोन को एक क्लोन से दूसरे में धकेल / खींच सकता हूं, और क्या यह अन्य क्लोन के लिए या तो एक स्पष्ट दूरस्थ शाखा के रूप में दिखाई देता है। मुझे उम्मीद नहीं है कि पूर्व जरूरी काम करेगा अगर रिमोट पहले से ही अपने स्वयं के हालांकि है।

यह देखते हुए कि स्टैश वास्तव में, पहले से ही इस पर एक शाखा है (जाहिरा तौर पर), मैं समाधान की तलाश में नहीं हूँ "एक शाखा को प्रत्येक स्ट्राइक करें और फिर उन साझा करें" की तर्ज पर - मैंने पहले ही कई प्राप्त कर लिए हैं कई, शाखाएं। इसलिए मैं refspec या इसी तरह की तलाश कर रहा हूं जिसका उपयोग मैं पुश / पुलिंग को नियंत्रित करने के लिए कर सकता हूं।

जवाबों:


26

यह स्‍टैश सिर्फ stashया है refs/stash, जिसे आप किसी दूरस्थ शाखा में धकेल सकते हैं:

git push origin stash@{2}:refs/heads/otherstash

refs/stashहालांकि, Git सीधे पुश करने से इंकार कर देगा । इसके अलावा, पूरे रिफ्लेक्स को धकेलने का एक तरीका प्रतीत नहीं होता है , जहाँ पिछले स्टैम्स संग्रहीत हैं।


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)सभी बाधाओं के लिए अच्छी तरह से करना चाहिए; यह भी देखें stackoverflow.com/a/5248758/85371
sehe

11

यह git pushशाखाओं को बनाने से बचने के लिए एक के रूप में अच्छी तरह से एकीकृत नहीं है , मैं git stash show -p > change.patch(परिवर्तनों को छिपाने के बाद) का उपयोग करता हूं या यहां तक git diff --cached > change.patchकि एक पैच बनाने के लिए जो मैं git apply change.patchअगली मशीन से काम करता हूं।

इस समाधान के साथ, कम से कम, यदि आपके वर्तमान कार्यशील स्थिति में कई फ़ाइलों को बदल दिया जाता है, तो सब कुछ एक एकल डेटा इकाई में समाहित है।


हाँ पर कैसे ? git stash -p ही मुझे हर हंक के बारे में अंतःक्रियात्मक रूप से पूछता है - फिर लंबी लाइन लगाता है जो मुझे समझ में नहीं आता है। वह "पैच" कहां है जो मैं अपने साथ दूसरी मशीन में ले जा सकता हूं। और क्या अंतर है - कैश किया गया? और आप git का उपयोग कैसे करते हैं? क्या आप कृपया थोड़ा और विस्तार से बता सकते हैं?
मोतिन शोर

मैंने अपने उत्तर को विस्तृत किया और सही किया
नव

4

आप पैच बना सकते हैं और किसी को भेज सकते हैं। आपको जो काम करना है, उसे लागू करना है।

git diff >> file.diff

3
ध्यान दें कि यह केवल उन वस्तुओं के लिए काम करेगा जो एक अंतर उत्पन्न करते हैं; आउटपुट में "बाइनरी फाइल अलग" से सावधान रहें।
लियाम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.