मैं diff
स्थानीय शाखा और दूरस्थ शाखा के बीच कैसे देख सकता हूँ ?
git diff HEAD origin/HEAD
जो मेरे द्वारा की गई तुलना में एक अलग दूरस्थ शाखा को इंगित करता है। पूर्ण शाखा नाम का उपयोग करना अपेक्षित है।
मैं diff
स्थानीय शाखा और दूरस्थ शाखा के बीच कैसे देख सकता हूँ ?
git diff HEAD origin/HEAD
जो मेरे द्वारा की गई तुलना में एक अलग दूरस्थ शाखा को इंगित करता है। पूर्ण शाखा नाम का उपयोग करना अपेक्षित है।
जवाबों:
दूरस्थ-ट्रैकिंग शाखाओं को अपडेट करने के लिए, आपको git fetch
पहले टाइप करना होगा और फिर:
git diff <masterbranch_path> <remotebranch_path>
आप git branch -a
सभी शाखाओं (स्थानीय और दूरस्थ) को सूचीबद्ध करने के लिए सूची से शाखा का नाम चुन सकते हैं (बस remotes/
दूरस्थ शाखा के नाम से हटा दें) ।
उदाहरण: git diff master origin/master
(जहां "मास्टर" स्थानीय मास्टर शाखा है और "मूल / मास्टर" एक दूरस्थ अर्थात् मूल और मास्टर शाखा है।)
git fetch
)
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
सुनिश्चित करें कि कोड। Exe फ़ाइल के लिए आपका मार्ग सही है।
git diff <local branch> <remote>/<remote branch>
उदाहरण के लिए git diff master origin/master
, याgit diff featureA origin/next
बेशक कहा गया है कि रिमोट-ट्रैकिंग शाखा आपको git fetch
पहले चाहिए; और आपको दूरस्थ रिपॉजिटरी में शाखाओं के बारे में जानकारी रखने की आवश्यकता है।
git diff <remote>/<remote branch> <local branch>
देखने के लिए करता हूं कि मेरा धक्का रिमोट रेपो को क्या करेगा।
git diff origin
यदि आप अपनी अपस्ट्रीम शाखा से तुलना करते हैं तो भी छोटा पर्याप्त है।
git fetch
शुरुआत में जोड़ें , यह मेरे जैसे नौसिखिया के लिए परेशानी का कारण बनता है
git diff <remote>/<remote branch> <local branch>
? अन्यथा, मुझे मेरे कंप्यूटर पर जोड़े गए और हटाए गए स्विच मिलते हैं (git संस्करण 2.7.0.windows.2)
पहला प्रकार
git branch -a
उपलब्ध शाखाओं की सूची प्राप्त करना। आउटपुट पर आप कुछ ऐसा देख सकते हैं
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
फिर फर्क दिखा
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
बजाय नहीं होना चाहिए ..
?
git log origin/my_branch..
जो ले जाएगाHEAD
स्थानीय रिफ के रूप में , जो कि ज्यादातर आप का मतलब है।
fatal: bad revision
या उससे थोड़ा अधिक था fatal: ambiguous argument
। मैं बस यही चाहता था कि दूसरी शाखा से एक ही फाइल में अंतर देखा जाए, क्या यह पूछने के लिए बहुत ज्यादा था? हाँ, हाँ यह था। :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
git 1.8.3.1 पर महान काम करता है
यदि आप किसी दिए गए शाखा पर हैं, और आप इसे उस अपस्ट्रीम शाखा के साथ तुलना करना चाहते हैं जिसे आप ट्रैक कर रहे हैं, उपयोग करें
git diff @{upstream}
यदि आपका अपस्ट्रीम सेट नहीं किया गया है (आमतौर पर मामला, टिप्पणियों में एरजून का धन्यवाद )
git diff @{push}
इस जवाब के सौजन्य से , संशोधन को निर्दिष्ट करने के लिए गिट प्रलेखन है:
<branchname>@{upstream}
, उदाहरण के लिएmaster@{upstream}
, एक शाखा (लघु रूप ) के लिए@{u}
प्रत्यय उस शाखा को संदर्भित करता है जिसके द्वारा निर्दिष्ट शाखा ऊपर (कॉन्फ़िगर और साथ कॉन्फ़िगर ) के निर्माण के लिए निर्धारित है । एक लापता@{upstream}
<branchname>@{u}
branchname
branch.<name>.remote
branch.<name>.merge
branchname
वर्तमान के लिए एक चूक चूक।
git diff @ @{upstream}
। अतिरिक्त @
है HEAD
, जो कि आप अभी हैं, इसलिए आप HEAD
ऊपर की ओर अपनी शाखा को ट्रैक कर रहे हैं के साथ तुलना कर रहे हैं । आप @{push}
उस शाखा के बीच का उपयोग करने के लिए उपयोग कर सकते हैं जिसे आप धक्का देने के लिए सेट कर रहे हैं
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
:। git diff @\{upstream\}
इसके बजाय उपयोग करना था। Ku
git fetch
पहले की आवश्यकता है , अन्यथा यह कुछ भी नहीं करता है, कोई आउटपुट नहीं दिखाता है; रेपो मूल में एक फ़ाइल को हटाकर परीक्षण किया गया और स्थानीय रूप से इस कमांड को चलाया। ..शादी के बाद ही आतिशबाजी।
मैं इसके बेहतर आउटपुट को समझता हूं:
git diff <remote-tracking branch> <local branch>
मुझे पता चलता है कि क्या गिराया जा रहा है और स्थानीय शाखा को धक्का देने पर क्या जोड़ा जा सकता है। बेशक, यह वही है, बस उलटा है, लेकिन मेरे लिए अधिक पठनीय है और जो कुछ भी होने जा रहा है, उसे देखते हुए मैं और अधिक आरामदायक हूं।
आसान तरीका:
git fetch
git log -p HEAD..FETCH_HEAD
यह पहले आपके डिफ़ॉल्ट रिमोट (मूल) से बदलाव लाएगा। जब आप रेपो क्लोन करेंगे तो यह अपने आप बन जाएगा। आप यह भी स्पष्ट किया जा सकता है: git fetch origin master
।
फिर गिट लॉग का उपयोग आपकी वर्तमान शाखा की तुलना करने के लिए किया जाता है। ( -p
पैच उत्पन्न) विकल्प वह है जो अंतर दिखाता है ।)
यह मेरा इसे करने का तरीका है।
#To update your local.
git fetch --all
यह रिमोट से सब कुछ लाएगा, इसलिए जब आप अंतर की जांच करते हैं, तो यह दूरस्थ शाखा के साथ अंतर की तुलना करेगा।
#to list all branches
git branch -a
उपरोक्त कमांड सभी शाखाओं को प्रदर्शित करेगा।
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
अब, आप निम्नानुसार अंतर की जांच कर सकते हैं।
git diff origin/<branch_name>
यह आपकी स्थानीय शाखा की तुलना दूरस्थ शाखा से करेगा
tl; डॉआर :git diff <local branch> <remote branch>
शेल पर गिट का उपयोग करते समय, मैं चारों ओर देखकर खुद को पहले उन्मुख करना पसंद करता हूं। यहाँ सभी शाखाओं को दिखाने की आज्ञा है
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
यहाँ मैं दो स्थानीय शाखाओं (है my-branch
और master
दूरस्थ) और 4 ( some-branch
, some-other-branch
, master
, और my-branch
)।
इसके अलावा, तारांकन चिह्न my-branch
इस तथ्य को इंगित करता है कि मैं वर्तमान में उस शाखा में हूं (आपको यह भी पता git status
होगा कि कमांड का उपयोग करके जो आउटपुट होगा:) On branch my-branch.
।
नोट: गिट बश शेल में दूरस्थ शाखाएं लाल रंग में दिखाई जाती हैं जबकि स्थानीय हरे रंग में दिखाई जाती हैं।
यदि आप केवल दूरस्थ शाखाएँ दिखाना चाहते हैं :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
सिर्फ स्थानीय शाखाओं को दिखाने के लिए आपको उपयोग करने के लिए लुभाया जा सकता है git branch -l
लेकिन यह पूरी तरह से अलग कमांड है। करने के लिए स्थानीय शाखाओं दिखाने के उपयोग git branch
कोई विकल्प के साथ
$ git branch
* my-branch
master
मूल शाखा विकल्पों की समीक्षा को पूरा करने के लिए वहाँ --list
है कि आप क्या उम्मीद कर सकते हैं के विपरीत है फ़िल्टर करने की अनुमति है । इसे इस तरह से एक पैटर्न के साथ उपयोग करें:
$ git branch --list 'my*'
* my-branch
तुम भी गठजोड़ कर सकते हैं --list
विकल्प के साथ -a
और -r
लेकिन उसके अनुसार अपनी पैटर्न अनुकूल करने के लिए सुनिश्चित करें ( याद रखें: दूरस्थ शाखाओं "रिमोट" से शुरू )। उदाहरण:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
डॉक्स: https://git-scm.com/docs/git-branch
अब आप किसी भी दो शाखाओं की तुलना कर सकते हैं सभी उपलब्ध लोगों से कर सकते हैं (आप दो स्थानीय या दो रीमोट की तुलना भी कर सकते हैं)।
यहां मैं रिमोट के साथ स्थानीय की तुलना कर रहा हूं my-branch
, वे सिंक्रनाइज़ हैं इसलिए मुझे कोई आउटपुट नहीं मिलता है:
$ git diff my-branch remotes/origin/my-branch
नोट: आपको शाखाओं का पूरा नाम देना होगा जिसमें कोई उद्धरण चिह्न नहीं है।
मैं स्थानीय की तुलना my-branch
रिमोट से भी कर सकता हूं master
। यहाँ मुझे कुछ आउटपुट मिलते हैं क्योंकि रिमोट my-branch
को मास्टर ब्रांच में मर्ज नहीं किया गया है।
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
यदि आप अंतर को केवल फ़ाइलों के नाम के रूप में देखना चाहते हैं तो उपयोग करें: अन्यथा
git diff --name-status <remote-branch> <local-branch>
,
यह दोनों शाखाओं के बीच सभी अंतर दिखाएगा:
git diff <remote-branch> <local-branch>
यहाँ एक संक्षिप्त जवाब है यदि आप अपनी वर्तमान शाखा और किसी ऐसी चीज़ की तुलना कर रहे हैं जिसे आप चाहते हैं git pull
।
git fetch
git diff FETCH_HEAD
पहला कमांड यह पता लगाएगा कि कौन सी रिमोट शाखा आपकी वर्तमान शाखा से मेल खाती है। FETCH_HEAD
संदर्भ में उस गणना की एक कलाकृति । फिर दूसरी कमांड उस संदर्भ का उपयोग करती है, जिसकी तुलना आपकी वर्तमान शाखा से होती है।
मुझे पता है कि इस सवाल के कई उत्तर पहले से ही हैं, लेकिन उनमें से अधिकांश को आज़माते समय मुझे एक अजीब त्रुटि मिली।
मेरे मामले में मेरे पास एक दूसरा रिमोट है, जो heroku
कि नहीं है origin
और क्योंकि यह सिंक में नहीं था, मुझे यह त्रुटि मिली जब चलाने की कोशिश कर रहा था git diff master heroku/master
:
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
या यह जब दूसरे दृष्टिकोण की कोशिश कर रहा है git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
समाधान स्पष्ट रूप git fetch
से git diff
, मेरे मामले में चलने से पहले दूरस्थ नाम का उल्लेख कर रहा था :
$ git fetch heroku
$ git diff master heroku/master
आशा है कि इसी मुद्दे के साथ दूसरों की मदद करता है।
git difftool <commit> .
यह आपकी स्थानीय फ़ाइलों के साथ इच्छित कमिटमेंट की तुलना करेगा। अंत में (स्थानीय के लिए) डॉट मत भूलना।
उदाहरण के लिए, कुछ प्रतिबद्ध के साथ अपनी स्थानीय फ़ाइलों की तुलना करने के लिए:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341
(और आपको git लाने की आवश्यकता नहीं है, जब तक कि नए कमिट्स की तुलना करने की आवश्यकता न हो)
उदाहरण
git diff 'master' 'testlocalBranch'
यदि आप वेबस्टॉर्म जैसे संपादक का उपयोग कर रहे हैं, तो आप शाखा के साथ तुलना करें और अपनी शाखा का चयन / चयन फ़ाइल पर राइट क्लिक कर सकते हैं।
वीएस 2019 में, बस FETCH करें कोड को न खींचें।
यह जो मैंने किया है। नीचे .gitconfig फ़ाइल में जोड़ा गया ताकि मैं Beyond Compar का उपयोग कर सकूं
File location: C:\Users\[username]\.gitconfig
नीचे जोड़ा गया
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
कमांड प्रॉम्प्ट खोलें और वर्किंग डायरेक्टरी पर जाएं। मैंने स्थानीय DEV शाखा की तुलना दूरस्थ DEV शाखा से करने के लिए नीचे दिया है
git difftool dev origin/dev --dir-diff
यह बियॉन्ड तुलना और खुले निर्देशिकाओं को खोलेगा जिसमें अलग-अलग फाइलें हैं। अगर कोई बदलाव नहीं हुआ तो बियॉन्ड तुलना शुरू नहीं होगी।
मुझे आश्चर्य है कि मेरी मास्टर शाखा में कोई बदलाव हुआ है ...
गिट चेकआउट मास्टर
गिट स्थिति
गिट शाखा-ए
- मास्टर
रीमोट / उत्पत्ति / मास्टर
git का मूल / स्वामी है
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
यह आपके शीर्षक ("इसके रिमोट") में प्रश्न का उत्तर देता है; यदि आप "दूरस्थ" (जिसे शाखा के लिए अपस्ट्रीम के रूप में कॉन्फ़िगर नहीं किया गया है) के खिलाफ अलग करना चाहते हैं, तो आपको इसे सीधे लक्षित करने की आवश्यकता है। आप निम्नलिखित के साथ सभी दूरस्थ शाखाएँ देख सकते हैं:
git branch -r
आप निम्नलिखित के साथ सभी कॉन्फ़िगर किए गए रीमोट देख सकते हैं:
git remote show
आप एक एकल रिमोट (जैसे मूल) के लिए शाखा / ट्रैकिंग कॉन्फ़िगरेशन देख सकते हैं:
git remote show origin
एक बार जब आप उचित मूल शाखा का निर्धारण करते हैं, तो बस एक सामान्य अंतर करें :)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
यह काफी सरल है। आप उपयोग कर सकते हैं:git diff remote/my_topic_branch my_topic_branch
my_topic_branch
आपकी विषय शाखा कहां है
प्रयत्न:
git diff origin HEAD
यह मानते हुए कि आप वर्तमान स्थानीय शाखा HEAD
को मूल के विरुद्ध फैलाना चाहते हैं। और यह मानकर कि आप स्थानीय शाखा में हैं। :)
यदि आप TortoiseGit का उपयोग करते हैं (यह Git के लिए GUI प्रदान करता है), तो आप अपने Git रेपो फ़ोल्डर पर राइट क्लिक कर सकते हैंGit Sync
।
यदि आप चयनित नहीं हैं तो तुलना करने के लिए आप अपनी शाखाओं का चयन कर सकते हैं। आप अंतर को कमिट कर सकते हैं। आप किसी भी कमेंट पर राइट-क्लिक कर सकते हैं फिर भी Compare with previous revision
अगल-बगल अंतर देख सकते हैं।