git क्लोन और मूल दूरस्थ रिपॉजिटरी के बीच अंतर करता है


170

मैंने एक जीथब रिपॉजिटरी पर क्लोन किया है और स्थानीय रूप से कोई बदलाव नहीं किया है। उसी शाखा पर कमिट के साथ जीथब रिपॉजिटरी आगे बढ़ी।

  1. मैं अपने स्थानीय भंडार और मूल गितुब भंडार के बीच अंतर कैसे पता करूँ?
  2. मुझे अपनी कार्यशील प्रति और मूल गितुब भंडार के बीच अंतर कैसे पता चलेगा?
  3. मैं अपने स्थानीय रिपॉजिटरी और उसी प्रोजेक्ट के एक और गितब रिपॉजिटरी के बीच एक अंतर कैसे पा सकता हूं?


1
@CiroSantilli 新疆 改造 六四 事件 法轮功 I: मुझे लगता है कि यह पर्याप्त रूप से अलग है: दूसरा प्रश्न किसी भी सामान्य दूरस्थ शाखा के बारे में पूछता है, जबकि यह GitHub के संदर्भ में है, प्लस तीन अलग-अलग शुरुआती बिंदुओं के बारे में पूछता है। वे निश्चित रूप से समान हैं, इसलिए आपका लिंक निश्चित रूप से उपयोगी है।
jvriesem

जवाबों:


161

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

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

2) रिमोट की अपनी स्थानीय प्रति अपडेट करें:

git fetch foobar

आपकी कार्यशील प्रति को नहीं बदलेगा।

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

git diff master foobar/master

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

यह वास्तव में केवल प्रश्न 3 का उत्तर है (एक और गीथूब रेपो के साथ अंतर करें)।
रुसलान कबालिन

5
कुछ भी नहीं "मूल गथुब भंडार" को किसी अन्य दूरस्थ भंडार से अलग करता है। या मैं कुछ गलत समझ रहा हूं?
dbyrne

जब मैंने इसे 2.7.4 git के साथ आज़माया तो "git diff master foobar / master" में अंतर नहीं दिखा। मुझे ऐसा लग रहा है कि यह मेरी स्थानीय प्रति ("मास्टर") की तुलना 1 तर्क ("मास्टर") के रूप में दिए गए रेपो से करता है और इसमें केवल "पथ / फ़ाइल" "फ़ॉबोर / मास्टर" का ही अंतर है। लेकिन कमांड ने मेरे लिए काम किया "फ़ॉर फ़ॉबर / मास्टर", फ़ोबोबर / मास्टर के साथ मेरे स्थानीय मास्टर की तुलना की।
user2081279

fetchएक विकल्प के रूप में (nr। 2) के बजाय : git remote update- यह दूरस्थ शाखाओं को ट्रैक करने के लिए सेट की गई आपकी सभी शाखाओं को अपडेट करेगा , लेकिन इन परिवर्तनों को मर्ज नहीं करेगा; याgit pull
टिमो

49

आपके सवालों का एक और जवाब (यह मानते हुए कि आप मास्टर पर हैं और पहले से ही "परिवर्तन लाने के लिए" कर चुके हैं)

1) जब स्थानीय शाखा बनाई गई थी, तब से दूरस्थ शाखा पर काम करता है:

git diff HEAD...origin/master

2) मुझे लगता है कि "वर्किंग कॉपी" से आपका मतलब है कि आपकी लोकल ब्रांच कुछ स्थानीय कमिट्स के साथ है जो अभी तक रिमोट पर नहीं हैं। आपकी स्थानीय शाखा पर आपके पास क्या है, इसके अंतर को देखने के लिए, लेकिन दूरस्थ शाखा चलाने पर इसका अस्तित्व नहीं है:

git diff origin/master...HEAD

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


HEAD..origin/masterवाक्य रचना के लिए धन्यवाद ! हमें मूल / HEAD के साथ त्रुटियां हो रही हैं, मौजूदा नहीं है और इसने इसे हल कर दिया है।
दान बेचार

@ruslan: इसका क्या मतलब है जब git diff HEAD...origin/masterमैं एक दूरस्थ निर्देशिका का क्लोन बना लेता हूं, तो मैं कुछ भी नहीं करता हूं जिसे मैं बदलाव करने के लिए अधिकृत हूं?
मोना जलाल

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

@MonaJalal का मतलब है कि आपके द्वारा क्लोन किए जाने के बाद कोई परिवर्तन नहीं हुआ है।
रुसलान कबालिन

21

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

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


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

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

"एक ही कोड के अन्य गितुब भंडार" जोड़ें - हम इसे एक कांटा कहते हैं:

$ 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)

सुनिश्चित करें कि हमारा स्थानीय रेपो अद्यतित है:

$ 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(-)

अब, मैं अपने रिमोट से अलग हूँ (गिथब पर)

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

दूरस्थ के साथ यह मुश्किल है - आपका कांटा: (यह अक्सर के साथ किया जाता है 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 गिट डिफरेंट ’करें, मुझे लगता है कि यह सुनिश्चित करने के लिए कि हमारे रिमोट की स्थानीय प्रति अद्यतित है, यह सुनिश्चित करने के लिए एक ch गिट लाने’ की आवश्यकता है।
डॉन

1
मैंने शायद पढ़ा है कि दूरस्थ और स्थानीय की तुलना करने के 20 पोस्ट मैंने अभी खुद ही निकाले हैं: git fetch की आवश्यकता है। git सही मायने में RCS का असेंबली कोड है। यीशु। पुष्टि करने के लिए धन्यवाद, डॉन!
टेरेंस पार्र

बस git fetchइस जवाब में जोड़ा गया।
FlipMcF

1
हम्म ... मुझे पसंद नहीं है कि मैंने अपने शाखा नाम के रूप में 'myfork' का उपयोग कैसे किया। वह किसी को भ्रमित कर सकता है (मुझे पसंद करें, जो इस उत्तर के लिए वापस आ गया)
FlipMcF

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