2010-02-11 11 views
17

एक सहयोगी के पास उनके भंडार में छिड़काव है जिसे मैं एक्सेस कर सकता हूं (फाइल सिस्टम के माध्यम से), और मैं अपने भंडार में एक शाखा में उस छिद्र को खींचना चाहता हूं।क्या मैं रिमोट रेपो से स्थानीय शाखा में छीन सकता हूं?

 
% git ls-remote ~alice/work/repo/ stash 
3ccc82fb1ee0e7bde1250c7926d333ce21c109c0  refs/stash 

लेकिन जब मुझे लगता है कि लाने के लिए प्रयास करते हैं, Git मुझे "असमर्थ 3cc82 लगता है ..."

 
% git fetch ~alice/work/repo stash:new_branch 
remote: Total 0 (delta 0), reused 0 (delta 0) 
error: unable to find 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 
fatal: object 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 not found 

वहाँ एक रास्ता मैं दूरदराज के गुप्त कोष प्राप्त कर सके है बताता है?

उत्तर

8

अद्यतन: मूल पोस्टर के सवाल का एक सीधा जवाब है:

git send-pack ./ 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0:refs/heads/tempbranch 

'tempbranch' नवीनतम गुप्त कोष (गुप्त कोष @ {0}) रिमोट से पर किया जाएगा। दुर्भाग्य से मुझे नहीं लगता कि रिफ्लॉग दूरस्थ शाखाओं से प्राप्त किया जाता है, इसलिए अन्य स्टैश पर पहुंचने का कोई तरीका नहीं है, जब तक कि आपके पास स्रोत रेपो तक पहुंच न हो।

स्क्रिप्टिंग यह: मैं

Is it possible to push a git stash to a remote repository?

भी उल्लेख सवाल पर अधिक एक अधिक व्यापक 'की पटकथा लिखी' समाधान तैनात, जैसा कि मैंने इस बीच में की खोज की, Git-भेज पैक यदि महत्वपूर्ण भूमिका निभाई हो सकता है आपके पास स्रोत रेपो तक पहुंच है:

git send-pack ../myworkingfolder/ [email protected]{0}:refs/heads/collegue_stash 
+0

धन्यवाद, मैंने देखा कि (और इसे ऊपर उठाया गया)। हालांकि यह सवाल एक अलग समस्या को हल करने की कोशिश कर रहा है; मैं रिमोट रेपो देख सकता था लेकिन मेरे सहयोगी ने प्रतिबद्ध होने के बजाय छेड़छाड़ की थी, फिर घर चली गई और मुझे छेड़छाड़ के बारे में बताया, इसलिए मैं बस उस छेड़छाड़ को पकड़ना चाहता था। कुछ लंबे समय तक घुमावदार समाधान स्वयं उपस्थित होते हैं (उदाहरण के लिए एक पैच बनाएं और इसे स्थानीय रूप से लागू करें) लेकिन मैं अपने रेपो में छेड़छाड़ करने का सीधा तरीका ढूंढ रहा था। –

+0

अधिक अंतर्दृष्टि के साथ संपादित टिप्पणी – sehe

+0

ओह, नाइस! धन्यवाद! –

1

आप नहीं कर सकते लेकिन यह आपको वैकल्पिक मार्ग प्रदान करता है। is-it-possible-to-push-a-git-stash-to-a-remote-repository

+0

हाय naven87। मैंने देखा कि अन्य एसओ सवाल लेकिन यह मेरी जरूरत के अनुरूप नहीं था। आपके उत्तर के लिए धन्यवाद, और मैं इसे थोड़ी देर बाद स्वीकार करूंगा यदि कोई और अधिक प्रत्यक्ष समाधान पोस्ट नहीं करता है। –

+0

ठीक है, स्वीकार किया गया। धन्यवाद naven87। –

8

हां, आप आंशिक रूप से कर सकते हैं। stash बस एक और ref है। आप रेफरी ला सकते हैं जो पूर्ण रेफ पथ के साथ refspec निर्दिष्ट करके सिर (शाखाएं) नहीं हैं।

git fetch some-remote +refs/stash:refs/remotes/some-remote/stash 
git stash apply some-remote/stash 

आप इस जब आप एक साधारण लाने चलाने भी गुप्त कोष में लाने के लिए कॉन्फ़िगर कर सकते हैं:

git config --add remote.some-remote.fetch +refs/stash:refs/remotes/some-remote/stash 
git fetch some-remote 
git stash apply some-remote/stash 

लेकिन अगर रेफरी के रूप में एक "अवैध refspec" के साथ कोई गुप्त कोष में है यह असफल हो जायेगी अस्तित्व में नहीं है, इसलिए आप मांग पर इसे करने से बेहतर तरीके से बेहतर हैं। आप उपनाम सेट कर सकते हैं जैसे:

cat > /usr/local/bin/git-fetch-stash 
git fetch --verbose "$1" +refs/stash:refs/remotes/"$1"/stash 
^D 
chmod +x /usr/local/bin/git-fetch-stash 

git fetch-stash some-remote 

चेतावनी यह है कि आप कई स्टैश नहीं प्राप्त कर सकते हैं। इन्हें reflog में प्रविष्टियों के रूप में संग्रहीत किया जाता है, और आप रिमोट के रीफ्लॉग को नहीं ला सकते हैं।

+2

यह स्वीकृत उत्तर – HerrSerker

+0

सहमत होना चाहिए। पहली गिट fetch + गिट स्टैश जोड़ी जादू है। –

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