2011-03-02 20 views
149

के बीच गिट diff मैंने एक github भंडार क्लोन किया है और स्थानीय रूप से कोई बदलाव नहीं किया है। गिथब भंडार एक ही शाखा में काम करता है।क्लोन और मूल रिमोट रिपोजिटरी

  1. मैं अपने स्थानीय भंडार और मूल जिथब भंडार के बीच एक अंतर कैसे प्राप्त करूं?
  2. मैं अपनी कामकाजी प्रति और मूल जिथब भंडार के बीच एक अंतर कैसे प्राप्त करूं?
  3. मैं अपने स्थानीय भंडार और एक ही परियोजना के किसी अन्य जिथब भंडार के बीच एक अंतर कैसे प्राप्त करूं?
+1

[तुलना रिमोट शाखा के साथ स्थानीय Git शाखा?] (Http://stackoverflow.com/questions/1800783/compare-local-git-branch-with-remote-branch) –

उत्तर

146

1) किसी भी दूरस्थ खजाने आप तुलना करना चाहते जोड़ें:

git fetch foobar 

लायें अपने काम की नकल नहीं बदलेगा:

git remote add foobar git://github.com/user/foobar.git 

2) एक दूरस्थ की अपनी स्थानीय प्रति अपडेट करें।

3) अपने स्थानीय भंडार से किसी भी शाखा की तुलना करने के लिए किसी भी दूरस्थ आपके द्वारा जोड़ी गई:

git diff master foobar/master 
+0

मैं की आवश्यकता होगी के संभावित डुप्लिकेट अंतर से पहले git fetch? मुझे लगता है कि इसके बिना diff करने का कोई रास्ता नहीं है। – Gemseeker

+0

हां, यह सही है। मैंने अपना जवाब अपडेट कर लिया है। – dbyrne

+0

यह वास्तव में केवल प्रश्न 3 का उत्तर है (एक और जिथब रेपो के साथ भिन्न)। –

40

एक अन्य जबाब अपने प्रश्नों के (यह मानते हुए आप गुरु पर हैं और पहले से ही था कि आप बनाने के लिए "Git मूल लाने" रेपो दूरदराज के परिवर्तन के बारे में जागरूक):

1) के बाद से जब स्थानीय शाखा बनाया गया था दूरस्थ शाखा पर प्रतिबद्धता:

git diff HEAD...origin/master 

2) मैं द्वारा "काम की नकल" मान लें कि आपके y मतलब हमारी स्थानीय शाखा कुछ स्थानीय प्रतिबद्धताओं के साथ जो अभी तक दूरस्थ नहीं हैं। क्या आप अपने स्थानीय शाखा पर है के अंतर को देखने के लिए लेकिन यह है कि दूरदराज के शाखा चलाने पर मौजूद नहीं है:

git diff origin/master...HEAD 

3) dbyrne द्वारा answer देखें।

+0

'HEAD..origin/master' वाक्यविन्यास के लिए धन्यवाद! हमें मूल/HEAD के साथ त्रुटियां नहीं मिल रही हैं, और यह हल हो गई है। – Dan

+0

@ruslan: इसका मतलब क्या है जब 'गिट diff HEAD ... मूल/मास्टर' कुछ रिटर्न नहीं देता है अगर मैंने रिमोट निर्देशिका क्लोन की है तो मुझे परिवर्तन करने के लिए अधिकृत किया गया है? –

+0

एक त्रुटि तब हुई जब मैं विंडोज जीयूआई का उपयोग कर क्लोनिंग कर रहा था इसलिए मुझे आश्चर्य है कि क्लोन पूरी तरह से चला गया है या नहीं। मैं देखता हूं कि फ़ोल्डर्स मेरी निर्देशिका में हैं लेकिन मैं यह सुनिश्चित करना चाहता हूं कि यह रिमोट जैसा ही है। हालांकि गिट खोल में, गिट diff कुछ भी नहीं देता है। अगर मेरा क्लोन सफल रहा है या नहीं तो मैं उलझन में हूं? –

17

यह उदाहरण मदद कर सकता है किसी को:

नोट "origin" दूरस्थ "Github पर क्या है"
नोट "mybranch" मेरी शाखा के लिए मेरे अन्य नाम है के लिए मेरे अन्य नाम है "क्या स्थानीय है" कि मैं कर रहा हूँ github
के साथ समन्वयन - यदि आपने कोई नहीं बनाया है तो आपकी शाखा का नाम 'मास्टर' है। हालांकि, मैं यह दिखाने के लिए अलग-अलग नाम mybranch का उपयोग कर रहा हूं कि शाखा नाम पैरामीटर का उपयोग कहां किया जाता है।


गीथब पर मेरे रिमोट रेपो वास्तव में क्या हैं?

$ git remote -v 
origin https://github.com/flipmcf/Playground.git (fetch) 
origin https://github.com/flipmcf/Playground.git (push) 

"एक ही कोड के अन्य GitHub भंडार" जोड़ें - हम इस एक कांटा फोन:

$ git fetch 

बदलें:

$ git remote add someOtherRepo https://github.com/otherUser/Playground.git 

$git remote -v 
origin https://github.com/flipmcf/Playground.git (fetch) 
origin https://github.com/flipmcf/Playground.git (push) 
someOtherRepo https://github.com/otherUser/Playground.git (push) 
someOtherRepo https://github.com/otherUser/Playground.git (fetch) 

यकीन है कि हमारी स्थानीय रेपो अप टू डेट है बनाना स्थानीय रूप से कुछ सामान। आइए फ़ाइल ./foo/bar कहें।py

$ git status 
# On branch mybranch 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: foo/bar.py 

समीक्षा मेरी अप्रतिबद्ध परिवर्तन

$ git diff mybranch 
diff --git a/playground/foo/bar.py b/playground/foo/bar.py 
index b4fb1be..516323b 100655 
--- a/playground/foo/bar.py 
+++ b/playground/foo/bar.py 
@@ -1,27 +1,29 @@ 
- This line is wrong 
+ This line is fixed now - yea! 
+ And I added this line too. 

स्थानीय रूप से प्रतिबद्ध होते हैं।

$ git commit foo/bar.py -m"I changed stuff" 
[myfork 9f31ff7] I changed stuff 
1 files changed, 2 insertions(+), 1 deletions(-) 

अब, मैं अपने दूरस्थ (GitHub पर) की तुलना में अलग हूँ

$ git status 
# On branch mybranch 
# Your branch is ahead of 'origin/mybranch' by 1 commit. 
# 
nothing to commit (working directory clean) 

Diff इस दूरदराज के साथ - अपने कांटा: (यह बार-बार git diff master origin साथ किया जाता है)

$ git diff mybranch origin 
diff --git a/playground/foo/bar.py b/playground/foo/bar.py 
index 516323b..b4fb1be 100655 
--- a/playground/foo/bar.py 
+++ b/playground/foo/bar.py 
@@ -1,27 +1,29 @@ 
- This line is wrong 
+ This line is fixed now - yea! 
+ And I added this line too. 

(रिमोट पर इन्हें लागू करने के लिए गिट पुश)

मेरा रिमोट कैसा है ई शाखा रिमोट मास्टर शाखा से अलग है?

$ git diff origin/mybranch origin/master 

रिमोट मास्टर शाखा से मेरी स्थानीय सामग्री अलग-अलग कैसे होती है?

$ git diff origin/master 

मेरी सामग्री किसी और के कांटे, एक ही रेपो की मास्टर शाखा से अलग कैसे होती है?

$git diff mybranch someOtherRepo/master 
+5

हम 'गिट diff' करने से पहले, मुझे लगता है कि रिमोट की हमारी स्थानीय प्रति अद्यतित है यह सुनिश्चित करने के लिए 'गिट fetch' करना आवश्यक है। – Don

+1

मैंने रिमोट और स्थानीय की तुलना करने के तरीके पर शायद 20 पद पढ़े हैं, मैंने इसे स्वयं ही समझ लिया है: गिट फ़ेच पहले की आवश्यकता है। गिट वास्तव में आरसीएस का असेंबली कोड है। यीशु। पुष्टि करने के लिए धन्यवाद, डॉन! –

+0

ने अभी इस जवाब में 'गिट fetch' जोड़ा है। – FlipMcF

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