रिमोट (मूल) परिवर्तन रिपॉजिटरी पर परिवर्तनों की जांच कैसे करें?


249

सवाल

निम्नलिखित वर्कफ़्लो करने के लिए Git कमांड क्या हैं?

परिदृश्य

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

  1. जांचें कि क्या दूरस्थ रिपॉजिटरी पर अन्य लोगों से कोई नया कमिट है, अर्थात origin?

  2. मेरा आखिरी पुल के बाद से दूरदराज के भंडार पर 3 नए प्रतिबद्ध थे कहो, मैं diff दूरदराज के भंडार का करता है, यानी चाहते हैं HEAD~3के साथ HEAD~2, HEAD~2के साथ HEAD~1और HEAD~1साथ HEAD

  3. दूरस्थ रूप से क्या बदला है, यह जानने के बाद, मैं दूसरों से नवीनतम आवागमन प्राप्त करना चाहता हूं।

मेरे अब तक के निष्कर्ष

चरण 2 के लिए: मैं कैरट अंकन पता HEAD^, HEAD^^आदि और लहरिल अंकन HEAD~2, HEAD~3आदि

चरण 3 के लिए: यह है, मुझे लगता है, बस एक git pull



@Daniele जो आपको जवाब दे रहा है, वह शानदार है और यहां तक ​​कि एक अनुकूलन बैश स्क्रिप्ट भी आती है। +1
गोर्बिसबम

जवाबों:


255

आप git fetch originनवीनतम संस्करण को इंगित करने के लिए अपनी रिपॉजिटरी में दूरस्थ शाखा को अपडेट कर सकते हैं । रिमोट के खिलाफ एक अंतर के लिए:

git diff origin/master

हां, आप कैरट नोटेशन का भी उपयोग कर सकते हैं।

यदि आप दूरस्थ परिवर्तनों को स्वीकार करना चाहते हैं:

git merge origin/master

34
अंतर उलटा दिखता है। मुझे यह उपयोग करना आसान लगता है git diff HEAD origin/masterइसलिए यदि मैं दूरस्थ परिवर्तनों को स्वीकार करता हूं तो अंतर दिखाता है कि क्या लागू होगा।
cbliard

2
"git fetch origin" और "git show-branch * master" मेरे लिए उपयोगी थे।
लेआ मास

159
git remote update && git status 

पर इस मिले जवाब के लिए करता है, तो पुल Git में जरूरत की जाँच करें

git remote updateअपने दूरस्थ रेफरी को तारीख तक लाने के लिए। फिर आप कई काम कर सकते हैं, जैसे:

  1. git status -unoआपको बताएगा कि आप जिस शाखा पर नज़र रख रहे हैं, वह आगे है, पीछे है या नहीं। यदि यह कुछ नहीं कहता है, तो स्थानीय और दूरस्थ समान हैं।

  2. git show-branch *master आपको उन सभी शाखाओं में कमिट दिखाएगा जिनके नाम मास्टर (जैसे मास्टर और मूल / मास्टर) में समाप्त होते हैं।

यदि आप उपयोग -vकरते हैं git remote updateतो आप देख सकते हैं कि कौन सी शाखाएँ अपडेट हुई हैं, इसलिए आपको वास्तव में किसी और कमांड की आवश्यकता नहीं है।


पर्याप्त नहीं। मुझे git pull <remote> <branch>बाद में करना होगा जैसे ही मुझे धक्का देने की आवश्यकता है, क्योंकि मेरी स्थानीय शाखा की नोक दूरस्थ समकक्ष के पीछे थी।
Overdrivr

3
@ स्थानीय शाखा में आने से पहले प्रश्न में परिवर्तन की जाँच करने का तरीका पूछता है। इसलिए, हां, आपको परिवर्तनों की जाँच करने के बाद अपनी स्थानीय शाखा को अपडेट करना होगा।
रजनी करुतुरी

क्या यह रिमोट मूल या अपस्ट्रीम है?
विक्रमवी

1
यह -v विकल्प काम नहीं करता है। git remote update -vमेरे लिएerror: unknown switch `v'
Shad

1
@ क्या आपको git remote -v updateनहीं करना चाहिएgit remote update -v
रजनी करुतुरी

34

"मूल" पर क्या हो रहा है, इसका सिंथेटिक दृष्टिकोण रखने का एक अच्छा तरीका है:

git remote show origin

11
लेकिन यह आदेश मुझे यह नहीं दिखाता है कि मेरी आखिरी खींचतान के बाद "मूल" पर कितने कमिट हुए हैं? जिस तरह से मैंने इसे "git रिमोट शो ओरिजिन" समझा, वह एक स्थानीय ऑपरेशन है और जानकारी प्राप्त करने के लिए नेटवर्क पर नहीं जाता है।
लर्नकुरेव

24

मैं सिर्फ उपयोग करता हूं

git remote update
git status

बाद वाला रिपोर्ट करता है कि मेरे स्थानीय के पीछे कितने हैं। (यदि कोई)

फिर

git pull origin master

मेरे स्थानीय तारीख तक लाने के लिए :)


13

मेरा नियमित प्रश्न "कुछ नया या रेपो में बदला हुआ" है, इसलिए व्हाट्सएप काम आता है। यहां मिला ।

git whatchanged origin/master -n 1

1
नया यह आदेश कभी अस्तित्व में नहीं था। धन्यवाद। यही मैं देख रहा था
सौरभ जैन

11

एक संभावित समाधान

एलन हाग्गै अलवी के समाधान के लिए धन्यवाद मैं निम्नलिखित संभावित वर्कफ़्लो के साथ आया:

चरण 1:

git fetch origin

चरण 2:

git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0

चरण 3:

git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master

13
रिमोट के संशोधनों के बीच अंतर के लिए आपको एक अस्थायी शाखा बनाने की आवश्यकता क्यों है? आप बसgit diff origing/master^ origing/master^^
पाब्लो मारिन-गार्सिया

@ पाब्लोइरिन-गार्सिया: धन्यवाद। मुझे नहीं पता था कि फिर वापस।
लर्नकुरेव

2

git statusहमेशा एक भ्रूण के बाद भी गुरु और मूल / गुरु के बीच का अंतर नहीं दिखाता है। यदि आप संयोजन git fetch origin && git statusकार्य करना चाहते हैं, तो आपको स्थानीय शाखा और उत्पत्ति के बीच ट्रैकिंग जानकारी निर्दिष्ट करने की आवश्यकता है:

# git branch --set-upstream-to=origin/<branch> <branch>

मास्टर शाखा के लिए:

git branch --set-upstream-to=origin/master master

0

चूंकि यह अब तक सुझाया नहीं गया है ... और मुझे यह काफी उपयोगी लगता है ...

मैं बस का उपयोग करें

git fetch origin

दूरस्थ परिवर्तनों को लाने के लिए, और फिर मैं स्थानीय और लंबित दूरस्थ आवागमन (और उनके संबंधित परिवर्तन) को अच्छे गिट टूल ( https://git-scm.com/docs/gitk ) - the- तर्क की तरह शामिल करता हूं

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