2012-08-01 13 views
8

एक सहयोगी ने मास्टर से स्थानीय शाखा ('शाखा ए') बनाई, कुछ काम किया, इसे धक्का दिया, मास्टर में विलय किया, कुछ और काम किया और इसे फिर से धक्का दिया। समवर्ती रूप से, अन्य सहयोगी अन्य शाखाओं पर काम कर रहे हैं और उन्हें मास्टर के लिए विलय कर रहे हैं।गिट: एक शाखा में काम करने के लिए कैसे देखें

अब मुझे इसकी समीक्षा करने के लिए शाखा ए खींचने की आवश्यकता है। इसलिए मैंने git pull और git checkout -b branchA origin/branchA किया है जो ठीक है। लेकिन रेपो में सभी शाखाओं में किए गए सभी आदेश (गिट diff/log/show) दिखाते हैं।

मैं शाखा के लिए किए गए सभी कार्यों का एक अंतर कैसे देख सकता हूं, जो मास्टर के संस्करण के विरुद्ध बनाया गया था?

मैं मास्टर के वर्तमान हेड के खिलाफ git diff शाखा ए कैसे कर सकता हूं, लेकिन केवल शाखा ए के भीतर फ़ाइलों को बदल सकता हूं?

उत्तर

10

निम्नलिखित आपके दूसरे प्रश्न, कैसे branchA के बीच मतभेदों को खोजने के लिए और अपने स्थानीय के वर्तमान संस्करण पर लागू होता है पर लॉग दिखाएगा master का। branchA में सभी कामों को देखने के लिए आप git log के साथ 'डबल डॉट' सिंटैक्स का उपयोग करना चाहते हैं जो master में नहीं हैं। बुद्धि के लिए:

git log master..branchA 

प्रति git log आदमी पेज:

SYNOPSIS 
    git log [<options>] [<since>..<until>] [[--] <path>...] 
    ... 
    <since>..<until> 
    Show only commits between the named two commits. When either <since> or <until> is omitted, it defaults to HEAD, i.e. the tip of the current branch. 
    For a more complete list of ways to spell <since> and <until>, see gitrevisions(7). 

आप या तो master या branchA में करता देखने के लिए चाहते हैं, तो लेकिन दोनों में है, तो आप उपयोग कर सकते हैं 'ट्रिपल डॉट' वाक्य रचना:

git log master...branchA 

अंत में, आप git diff, अर्थात्, git diff master..branchA और git diff master...branchA, respectivel साथ ठीक उसी सिंटैक्स का उपयोग कर सकते हैं y।

एक तरफ के रूप में, यदि आपके पास branchA चेक आउट है, तो आपको इसे <until> के रूप में निर्दिष्ट करने की भी आवश्यकता नहीं है। Git HEAD समझेंगे अगर यह अनिर्दिष्ट छोड़ दिया है, ताकि आदेशों की इन दो सेट के बराबर हैं:

git checkout branchA 
git log master.. 

और

git log master..branchA 
0

आप Git लॉग उपयोग कर सकते हैं --branches = mybranch

इस विशिष्ट शाखा

+0

यह काम नहीं करता। शायद क्योंकि मैं मास्टर में विलय कर चुका हूं, लेकिन मैं अन्य लोगों द्वारा किए गए परिवर्तन देख रहा हूं। – user1491250

0

Git करता है "जो शाखा" वे पर अंजाम दिया के बारे में जानकारी को बनाए रखने नहीं है। वे केवल आपको उस पेड़ में एक बिंदु देते हैं जहां से आप वापस जा सकते हैं। एक बार विलय होने के बाद, आपके पास एक मर्ज प्रतिबद्धता से कोई रास्ता नहीं है, यह तय करने के लिए कि कौन से माता-पिता से शुरू हुआ था। कुछ विवरण over here में चर्चा की गई है।

यह मेरी समझ है। अगर मैं गलत हूं तो मुझे सही होना अच्छा लगेगा।

2
  1. git diff master..brnachA: मास्टर और शाखा ए के HEAD के बीच सभी संशोधित फ़ाइलों की तुलना करेगा।
  2. git diff master...brnachA: शाखा ए की तुलना उस मास्टर के संस्करण के विरुद्ध की जाएगी जो इसे बनाया गया था।

FYI करें: git diff कमांड लाइन में उत्पादन उत्पन्न होगा। यदि आप कुछ दृश्य उपकरणों में आउटपुट देखना चाहते हैं, तो git difftool का उपयोग करें।

आप सभी git diff तर्क और विकल्प git difftool पर भी पास कर सकते हैं।

+0

-2- बिल्कुल सही नहीं है। यह या तो 'मास्टर' या 'शाखा ए' में काम करेगा लेकिन दोनों नहीं। यदि 'मास्टर' उन्नत 50 काम करता है, लेकिन 'शाखा ए' पूरी तरह से विलय हो गया था, तो यह मास्टर में 50 काम करेगा। यह मास्टर में अपने मर्ज बेस के खिलाफ 'शाखा ए' की तुलना नहीं करता है, जो पहला सवाल प्रतीत होता है? – Christopher

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