अप्रकाशित गिट देखना


1752

मैं अपने द्वारा किए गए किसी भी स्थानीय आवागमन को कैसे देख सकता हूं, जिसे अभी तक दूरस्थ रिपॉजिटरी में धकेल नहीं दिया गया है। कभी-कभी, git statusयह पता लगाएगा कि मेरी शाखा X आगे है origin/master, लेकिन हमेशा नहीं।

क्या यह मेरे बग की गिट के साथ एक बग है, या मैं कुछ याद कर रहा हूं?


18
Git 2.5+ (Q2 2015) के साथ शुरू, वास्तविक जवाब होगा git log @{push}..। उस नए शॉर्टकट को देखें @{push}( मेरे द्वारा बताए गए
VonC

59
@Torek - अभी तक Git द्वारा एक और सरल कार्य कठिन बना। हर बार एक Git सवाल सैकड़ों या हजारों upvotes और लाखों विचारों के साथ दिखाई देता है, तो किसी को सोचना चाहिए: वाह, हमने वास्तव में उस वर्कफ़्लो को खराब कर दिया है। काश, गिट देव ने विकास के जीवन चक्र में प्रतिक्रिया कदम को छोड़ दिया है, इसलिए प्रतिक्रिया शामिल नहीं है। इसके बजाय, वे बार-बार वही गलतियाँ करते रहते हैं। इस प्रश्न के लिए, git status --all2010 में प्रकट होना चाहिए था; या git status -vवास्तव में क्रिया आउटपुट प्रदान करना चाहिए जिसमें अतिरिक्त जानकारी शामिल है।
jww

4
मैं असहमत हूं कि "गिट स्टेटस -v" को यह जानकारी प्रदान करनी चाहिए क्योंकि यह कार्यशील पेड़ के बारे में स्थिति देने का इरादा है, क्योंकि यह केवल चेक आउट शाखा से संबंधित है। हालांकि, "गिट शाखा -v" के बारे में नीचे दिए गए उत्तर को देखें, मेरा मानना ​​है कि स्वीकृत उत्तर होना चाहिए
जोएलफैन

13
यह विशेष रूप से StackOverflow प्रश्न में सही उत्तरों की उच्चतम संख्या है जो सभी काम अभी तक कोई मतलब नहीं है।
पीट एल्विन

@ josh-buhler क्षमा करें, मैंने गलती से वोट कर दिया ... जबकि मैंने 'STAR' पर क्लिक करने का प्रयास किया। फिर से मतदान करने का प्रयास किया, लेकिन, काम नहीं किया!
रफीअल्हमद

जवाबों:


1827
git log origin/master..HEAD

आप समान सिंटैक्स का उपयोग करके फ़र्क भी देख सकते हैं

git diff origin/master..HEAD

3
यह मेरे लिए किया था - किसी कारण के लिए लॉग लॉग मूल .. अपने आप में एक त्रुटि फेंक रहा था। ऐसा लगता है कि जिस तरह से मेरी स्थानीय शाखा को कॉन्फ़िगर किया गया था, उसके साथ मुझे भी एक समस्या थी - एक बार जब मैंने अपने यहां किए गए बदलाव किए: wincent.com/blog/… ... समस्या हल हो गई थी, और मैं फिर से गिट स्थिति का उपयोग कर सकता था कि मुझे क्या चाहिए। ।
जोश बुहलर

6
अमूल्य: इतना तो मैंने इसलिए किया git config --global alias.ahead "log origin/master..HEAD --oneline"ताकि मैं जल्दी से पता लगा सकूँ कि मैं कहाँ हूँ। और भी अधिक कैंडी:for i in *; do echo $i && git ahead 2>/dev/null; done
जेमी

15
git log --stat origin/master..HEADथोड़ी अतिरिक्त अजीबता के लिए
Cory डेनियलसन

141
यह सबसे अच्छा समाधान नहीं है। उत्पत्ति / स्वामी हमेशा अपस्ट्रीम शाखा नहीं हो सकते हैं। एक बेहतर समाधान अपस्ट्रीम शाखा को इंगित करने के लिए "मूल / मास्टर" के बजाय @ {यू} का उपयोग करना है। चूंकि HEAD डिफ़ॉल्ट रूप से निहित है, इसलिए कोई भी इसे छोड़ सकता है। देखें @ बिंग लिंग का जवाब। आउटगोइंग परिवर्तन: git log @ {u} .. आने वाले परिवर्तन: git log .. @ {u}
प्लेगहैमर

12
@ नोक्टर्न मैं केवल यह बताना चाहता हूं कि जब यह जवाब पोस्ट किया गया था, तो @{u}सिंटैक्स अभी तक उपलब्ध नहीं था, यह केवल 12 फरवरी, 2010 को उपलब्ध हुआ । इसके अलावा, @{u}अगर स्थानीय शाखा को अपस्ट्रीम के साथ कॉन्फ़िगर नहीं है काम नहीं करेगा। अंत में, @{u}वर्तमान में टैब पूरा करने का समर्थन नहीं है, <remote>/<branch>टैब समापन के साथ यह जानकारी प्राप्त करने के लिए सबसे तेज़ तरीकों में से एक है, और यह काम करेगा कि एक अपस्ट्रीम कॉन्फ़िगर किया गया है या नहीं।

703

यदि आप उन सभी शाखाओं को देखना चाहते हैं, जिन्हें अभी तक धकेला नहीं गया है, तो आप कुछ इस तरह की तलाश कर सकते हैं:

git log --branches --not --remotes

और यदि आप केवल प्रत्येक शाखा, और शाखा के नामों पर सबसे हालिया प्रतिबद्ध देखना चाहते हैं, तो:

git log --branches --not --remotes --simplify-by-decoration --decorate --oneline

8
यह कमाल का है। संबंधित परिदृश्य में मेरे पास दो अपस्ट्रीम शाखाओं के साथ दो स्थानीय शाखाएं थीं, और एक स्थानीय हाथ को दूसरे में मिला दिया गया था। मैं जानना चाहता था कि कौन से कमिट्स रिबास करने के लिए सुरक्षित थे, लेकिन सामान्य git log master..HEADकाम नहीं करेगा क्योंकि कई अपस्ट्रीम थे। इस पोस्ट ने मुझे git log MyBranch --not --remotesउन सभी कमिटों को दिखाने के लिए प्रेरित किया, जिन्हें एक ही शाखा में किसी भी अपस्ट्रीम पर धकेल नहीं दिया गया है।
पावन

यह इतना उपयोगी था कि मैंने इसे अपने zsh config में अलियास किया। धन्यवाद।
स्कूटी सी।

मैं समझता हूं कि आपका दूसरा कमांड उन कमिट्स को भी सूचीबद्ध कर रहा है, जिन्हें अभी तक धक्का नहीं दिया गया है, केवल यह प्रति शाखा केवल एक दिखाता है।
स्टीफन

--decorateशाखाओं को भी दिखाता है। --graphइसे और भी स्पष्ट करता है।
रे

ध्यान दें कि ये आदेश सूची केवल वही है जो किसी भी शाखा में धकेल नहीं दी गई है । उदाहरण: कहते हैं कि आपके पास शाखा करतब के साथ शाखा विकसित है-न्यूथिंग। आप करतब दिखाने के लिए स्थानीय रूप से परिवर्तन करते हैं-न्यूथिंग। (लॉग में परिवर्तन हैं।) तब आप करतब दिखाने वाले को नई शाखा में धकेल देते हैं। (लॉग खाली है)। आप स्थानीय रूप से विकसित करने के लिए स्थानीय करतब-न्यूटहिंग को मर्ज करते हैं। तेज़-फ़ॉरवर्ड मानकर, लॉग में अभी भी कोई बदलाव नहीं हुआ है।
पैट्रिक डब्ल्यू

325

आप स्थानीय स्तर पर नहीं बल्कि ऊपर वाले सभी कमिट्स दिखा सकते हैं

git log @{u}..

@{u}या @{upstream}इसका मतलब है कि वर्तमान शाखा का अपस्ट्रीम शाखा (देखें git rev-parse --helpया git help revisionsविवरण के लिए)।


17
विंडोज पर, मुझे उद्धरण में अंतिम तर्क संलग्न करने की आवश्यकता थी, जैसे: git log "@ {u} .."
जॉन श्नाइडर

git log @{u}.. -p सबसे उपयोगी विकल्पों में से एक -p है , जो प्रत्येक पुष्टिकरण में पेश किए गए मतभेदों को दर्शाता है।
mQuiroz

संभवतः बेहतर गिट लॉग @ {पुश} .., एक और जवाब देखें ।
हंस-पीटर स्टॉर

183

यह मेरे लिए काम किया:

git cherry -v 

जैसा कि Git में संकेत दिया गया है : सभी अप्रकाशित कमिट या कमिट देखें, जो दूसरी शाखा में नहीं हैं


21
मुझे लगता है कि यह मुख्य उत्तर होना चाहिए क्योंकि यह सभी फाइलों के बजाय कमिट्स, पढ़ने में कठिन, क्रियात्मक अंतर की अधिक संक्षिप्त सूची देता है !!
वीआईएफआई

1
git-cherry - "अपस्ट्रीम पर लागू होने के लिए अभी तक काम करता है खोजें", ओपी के लिए क्या पूछ रहा था प्रदान करने के लिए लगता है, लेकिन पूरे प्रतिबद्ध संदेश के बजाय केवल प्रतिबद्ध विषय के साथ।
Eido95 20

2
यह ध्यान देने योग्य है कि यह केवल आपको बताएगा कि क्या आपके द्वारा वर्तमान में जाँच की गई शाखा पर अप्रकाशित कमिट हैं। यह नहीं बताएगा कि आपके पास अप्रकाशित कमिट के साथ एक स्थानीय शाखा है (वर्तमान में चेक आउट नहीं है)।
डेव यारवुड

66

आप इसके साथ कर सकते हैं git log:

git log origin..

यह मानते हुए कि originआपके अपस्ट्रीम का नाम ..है HEAD, जिसका तात्पर्य किसी भी संशोधन नाम को छोड़ने से है , जो उन नए कमिटों को सूचीबद्ध करता है जिन्हें धक्का नहीं दिया गया है।


1
जब भी मैं के साथ एक जवाब को देखने git logऔर "2-डॉट्स-नहीं-3", यह हमेशा की मुझे याद दिलाने stackoverflow.com/questions/53569/... );
VonC

1
बस इसे उत्तर में जोड़ने के लिए - यदि कोई अपस्ट्रीम सेटअप नहीं है तो यह कमांड परिणाम कहता है कि कोई अपस्ट्रीम सेटअप नहीं था। भागो git branch --set-upstream master origin/<branch>सेटअप नदी के ऊपर करने के लिए आप इस आदेश का उपयोग करने के लिए प्रतिबद्ध है कि मंचन कर रहे हैं देखने के लिए इच्छुक रहे हैं।
asyncwait

यह मूल शाखा में डिफ़ॉल्ट शाखा के साथ तुलना करेगा, वर्तमान दूरस्थ शाखा नहीं।
ग्रुजे

43

अन्य सभी उत्तर "अपस्ट्रीम" (जिस शाखा से आप खींचते हैं) के बारे में बात करते हैं।
लेकिन एक स्थानीय शाखा एक अलग शाखा को धक्का दे सकती है, जिससे वह खींचती है।

masterदूरस्थ ट्रैकिंग शाखा को धक्का नहीं दे सकता है " origin/master"।
के लिए अपस्ट्रीम शाखा masterहो सकती है origin/master, लेकिन यह रिमोट ट्रैकिंग शाखा origin/xxxया यहां तक ​​कि धक्का दे सकती है anotherUpstreamRepo/yyy
जिन्हें मूल्य branch.*.pushremoteके साथ-साथ वर्तमान शाखा द्वारा निर्धारित किया जाता है global remote.pushDefault

यह है कि एक ही है कि पटरियों: दूरस्थ ट्रैकिंग शाखा है जो मायने रखता है जब unpushed प्रतिबद्ध मांग branch at the remoteजहां स्थानीय शाखा पर लाई जानी होगी। हो सकता है, फिर से, या यहां तक कि ।
branch at the remoteorigin/xxxanotherUpstreamRepo/yyy

Git 2.5+ (Q2 2015) उसके लिए एक नया शॉर्टकट पेश करता है: <branch>@{push}

प्रतिबद्ध 29bc885 देखें , 3 डीbe9db को कमिट करें , adfe5d0 को कमिट करें , 48c5847 को कमिट करें , a1ad0eb को कमिट करें , e291c75 को कमिट करें , 979cb24 को कमिट करें , 3a429d0 के लिए कमिट करें , a9f9f8c के लिए , 8766e6f पर करें , da66927 , 27662727 पर कमेंट करें । 2015], और जेफ किंग ( ) द्वारा e41bf35 [01 मई 2015] । ( जूनियो सी हमानो द्वारा विलय -peff
gitsterin प्रतिबद्ध c4a8354 , 05 जून 2015)

प्रतिबद्ध adfe5d0 बताते हैं:

sha1_name: @{push}आशुलिपि लागू करें

एक त्रिकोणीय वर्कफ़्लो में, प्रत्येक शाखा में ब्याज के दो अलग-अलग बिंदु हो सकते हैं: @{upstream}जो आप सामान्य रूप से खींचते हैं, और वह गंतव्य जिसे आप सामान्य रूप से धक्का देते हैं। बाद के लिए कोई आशुलिपि नहीं है, लेकिन यह उपयोगी है।

उदाहरण के लिए, आप जानना चाह सकते हैं कि आपने कौन सा काम अभी तक नहीं किया है :

git log @{push}..

या एक अधिक जटिल उदाहरण के रूप में, कल्पना करें कि आप सामान्य रूप से origin/master(जिसे आप अपने रूप में सेट करते हैं @{upstream}) से परिवर्तन खींचते हैं , और परिवर्तनों को अपने स्वयं के व्यक्तिगत कांटे (जैसे, जैसे myfork/topic) पर धकेल देते हैं ।
आप कई मशीनों से अपने कांटे को धक्का दे सकते हैं, जिससे आपको अपस्ट्रीम के बजाय पुश गंतव्य से परिवर्तन को एकीकृत करने की आवश्यकता होती है ।
इस पैच के साथ, आप बस कर सकते हैं:

git rebase @{push}

पूरा नाम लिखने के बजाय।

प्रतिबद्ध 29bc885 कहते हैं:

for-each-ref: " %(push)" प्रारूप स्वीकार करें

जिस तरह हमारे पास प्रत्येक रेफ के लिए %(upstream)" @{upstream}" रिपोर्ट करने के लिए " " है, यह पैच " %(push)" टू मैच " @{push}" जोड़ता है ।
यह अपस्ट्रीम के रूप में समान ट्रैकिंग प्रारूप संशोधक का समर्थन करता है (क्योंकि आप जानना चाहते हैं, उदाहरण के लिए, किन शाखाओं को धक्का देना है )।

यदि आप यह देखना चाहते हैं कि आप जिस स्थानीय शाखा को आगे बढ़ा रहे हैं, उसकी तुलना में आपकी स्थानीय शाखाएँ कितनी आगे / पीछे हैं:

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

42

करंट शाखा में अप्रकाशित कमिट की तलाश के लिए हांडी गिट उर्फ :

alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline

यह मूल रूप से क्या करता है:

git log origin/branch..branch

लेकिन वर्तमान शाखा का नाम भी निर्धारित करता है।


8
यह कमाल का है! उपनामों से अपरिचित लोगों के लिए [alias] अनुभाग के तहत उन्हें अपनी ~ / .ITconfig फ़ाइल में जोड़ें।
गैरी हरण

1
बाश में कॉपी / पेस्ट काम नहीं करता है, लेकिन स्क्रिप्ट काफी उपयोगी और समझ में आता है
greuze

यह कोई हरामी उपनाम नहीं है, जैसा @GaryHaran बताते हैं। उपनाम जोड़ने के लिए एक git कमांड है: git alias <alias-name> <command>इस मामले में, शेल से विशेष वर्णों से बचने के लिए, कमांड को एक उद्धरण से घिरा होना चाहिए।
डेग होइदहल

4
वह होगा:git config --global alias.unpushed '!GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline'
रिकी लेवी

ऐसा लगता है कि मूल रूप से git log @ {u} .. के समान है, हालांकि - एक और उत्तर देखें ।
हंस-पीटर स्टॉर 12

35

तुम कोशिश कर सकते हो....

gitk

मुझे पता है कि यह एक शुद्ध कमांड लाइन विकल्प नहीं है, लेकिन अगर आपने इसे स्थापित किया है और एक जीयूआई प्रणाली पर हैं, तो यह देखने का एक शानदार तरीका है कि आप एक संपूर्ण बहुत अधिक क्या देख रहे हैं।

(मैं वास्तव में आश्चर्यचकित हूं कि किसी ने भी अब तक इसका उल्लेख नहीं किया है।)


3
gitk --allसभी शाखाओं को देखने के लिए।
रे

3
tigncurses विकल्प है।
रे

@ जस्टिन-ओम gitkकमाल है! कभी नहीं पता था कि यह मौजूद है! एक अच्छा यूआई में परिवर्तन के माध्यम से ब्राउज़ करने के लिए आसान।
रफीअल्हमद

@ray tig'टर्मिनल केवल' स्थिति में सबसे उपयोगी है - जहाँ आपको एक्सेस डेस्कटॉप GUI नहीं मिलता है। पहली बार इसके बारे में सीखना! साक्षात्कार: की समीक्षा tigहै git!
रफीअल्हमद

30

git branch -v प्रत्येक स्थानीय शाखा के लिए दिखाएगा कि क्या यह "आगे" है या नहीं।


2
हां, यदि शाखा पर कोई अप्रकाशित कमिट है devel, तो संबंधित लाइन होगी * devel 8a12fc0 [ahead 1] commit msg( *केवल चेक आउट शाखा के अनुरूप लाइन पर होगी )। ahead 1का अर्थ है "एक प्रतिबद्ध द्वारा आगे", यानी एक अप्रकाशित प्रतिबद्ध है।
औरेलिन

2
है ना git branch -vv? सी एफ डॉक्स: "यदि दो बार दिया जाता है, तो अपस्ट्रीम शाखा का नाम प्रिंट करें, साथ ही (रिमोट रिमोट <git शो भी देखें")। "
डर्टी हेनरी

यह अपस्ट्रीम शाखा के नाम को प्रिंट करने के बारे में नहीं है, बल्कि सिर्फ मुद्रण behindऔर / या aheadप्रत्येक स्थानीय शाखा के लिए है, जो ओपी की समस्या को हल करने के लिए पर्याप्त है (अप्रकाशित का पता लगाने के लिए)। git branch -vइसके लिए पर्याप्त है, बस Git 2.16.2 :) के साथ फिर से परीक्षण किया गया है
Aurelien

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

30

मैंने पहले एक कमिट किया था, न किसी शाखा में धकेला गया, न रिमोट और न ही स्थानीय। सिर्फ कमिटमेंट। अन्य उत्तरों में से कुछ भी मेरे लिए काम नहीं किया, लेकिन इसके साथ:

git reflog

वहां मुझे मेरी कमिटमेंट मिली।


जैसा कि इस लिंक में कहा गया है git-scm.com/docs/git-reflog , संदर्भ लॉग या "रिफ्लॉग्स", तब रिकॉर्ड करें जब स्थानीय रिपॉजिटरी में शाखाओं और अन्य संदर्भों के सुझावों को अपडेट किया गया था। मेरे मामले में, मैंने एक रेपो पर क्लोन किया, एक नई शाखा बनाई, शाखा को हटा दिया, एक नया बनाया, एक कमेट बनाया और कमिट को बदल दिया। ये सभी चरण जहाँ HEAD @ {0}: प्रतिबद्ध (संशोधन): .. HEAD @ {1}: प्रतिबद्ध: ... HEAD @ {2}: चेकआउट: से चल रहा है ... से ... HEAD @ { 3}: चेकआउट: से चल रहा है ... से ... HEAD @ {4}: क्लोन: प्रारूप के लिए #sorry से तो SO टिप्पणियों में बहुस्तरीय अनुमति नहीं देता है
वेग

इसमें मूल शामिल है, साथ ही सबसे अच्छा समाधान @Plague Hammer ( stackoverflow.com/a/2016954/624048 ) द्वारा प्रदान की गई कमांड का उपयोग करना होगा
लिंकन

20

मैं फ़ाइलों की सूची (और स्थिति) प्राप्त करने के लिए निम्नलिखित उपनाम का उपयोग करता हूं जो कि प्रतिबद्ध हैं लेकिन वर्तमान शाखा के लिए धक्का नहीं दिया गया है

git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"

तो बस करो:

git unpushed

दिलचस्प लग रहा है, लेकिन $ (git name-Rev --name-only HEAD) मेरे मामले में "अपरिभाषित" है
vak

13

मेरा मानना ​​है कि ऐसा करने का सबसे विशिष्ट तरीका कुछ इस तरह है:

git cherry --abbrev=7 -v @{upstream}

हालाँकि, मैं व्यक्तिगत रूप से दौड़ना पसंद करता हूँ:

git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..

जो सभी शाखाओं से आने वाले कमिट को दिखाता है जो अपस्ट्रीम में मर्ज नहीं किए जाते हैं, साथ ही अपस्ट्रीम में आखिरी कमिट (जो बाकी सभी कमिट्स के लिए रूट नोड के रूप में दिखाई देते हैं)। मैं इसे इतनी बार उपयोग करता हूं कि मैंने इसके noupलिए उपनाम बनाया है।

git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'

11

मेरा सुझाव है कि आप स्क्रिप्ट देखें https://github.com/badele/gitcheck , मैंने इस स्क्रिप्ट को एक बार अपने सभी गिट रिपॉजिटरी पास में चेक के लिए कोडित किया है, और यह दिखाता है कि किसने शुरू नहीं किया है और किसने धक्का नहीं दिया है / खींच लिया है।

यहाँ एक नमूना परिणाम यहां छवि विवरण दर्ज करें


1
क्या आप बता सकते हैं कि विंडोज मशीन पर काम करने के लिए इस प्लगइन को कैसे प्राप्त करें? मैं पाइप चलाने की कोशिश कर रहा हूं, लेकिन कमांड लाइन में कमांड गायब है। मुझे पायथन स्थापित हो गया, लेकिन मुझे यकीन नहीं है कि यह पर्याप्त है।
कोनराड साज़ोविस्की

@ KonradSzałwiński मैं विंडोज़ मशीन नहीं है, लेकिन इस विषय ( stackoverflow.com/questions/4750806/… ) में, उपयोगकर्ता आपके प्रश्न का उत्तर लगता है :)। लेकिन मैंने खिड़कियों में परीक्षण नहीं किया है और मुझे यकीन नहीं है कि यह काम करेगा।
ब्रूनो एडेल

@ KonradSzałwiński ChristianTremblay github योगदानकर्ता ने एक विंडोज़ समर्थन जोड़ा है। अब gitcheck विंडोज़ पर काम करता है। आप इसे github.com/badele/gitcheck
Bruno Adelé

अब, आप gitcheck का उपयोग सीधे docker कंटेनर (अपनी होस्ट में आपकी फ़ाइलों के साथ) से भी कर सकते हैं। अधिक जानकारी के लिए gitcheck github प्रोजेक्ट देखें
Bruno Adelé

इसे पोस्ट करने के लिए धन्यवाद, यह वास्तव में उपयोगी लगता है। मैंने स्थापित करने की कोशिश की, लेकिन स्थापना के बाद मुझे इसे चलाने के लिए स्क्रिप्ट का स्थान नहीं मिला। $ पाइप स्थापित git + git: //github.com/badele/gitcheck.it एकत्रित करने वाला git + git: //github.com/badele/gitcheck.it क्लोनिंग git: //github.com/badele/gitcheck.git to c : \ users \ u6041501 \ appdata \ local \ temp \ pip-bxt472z_-build Install किए गए संकुल को स्थापित करना: gitcheck gitcheck के लिए संस्थापन चल रहा है: gitcheck के लिए संस्थापन शुरू किया: gitcheck के साथ समाप्त हुआ 'स्थिति' सफलतापूर्वक 'gitcheck-0.3 स्थापित' के साथ समाप्त .22
लॉरेन फिच


9

यह बग नहीं है। आप शायद जो देख रहे हैं वह एक असफल ऑटो-मर्ज के बाद स्थिति है जहां रिमोट से परिवर्तन किए गए हैं लेकिन अभी तक विलय नहीं हुआ है।

स्थानीय रेपो और रिमोट के बीच कमिट को देखने के लिए यह करें:

git fetch

यह 100% सुरक्षित है और यह आपके काम की नकल का मजाक नहीं उड़ाएगा। यदि परिवर्तन git statuswil शो थे X commits ahead of origin/master

अब आप उन कमिट का लॉग दिखा सकते हैं जो रिमोट में हैं, लेकिन स्थानीय में नहीं:

git log HEAD..origin

8

इसने मेरे लिए बेहतर काम किया:

git log --oneline @{upstream}..

या:

git log --oneline origin/(remotebranch)..

2
किसी और के लिए आश्चर्य की बात है, @{upstream}शाब्दिक है ( upstreamएक जादू शब्द है), जबकि remotebranchसिर्फ आपकी शाखा का नाम है।
स्टीव बेनेट

7

वहाँ अप्रकाशित नाम का उपकरण है जो निर्दिष्ट कार्य निर्देशिका में सभी Git, Mercurial और Subversion repos को स्कैन करता है और ucommited फ़ाइलों की सूची दिखाता है और unpushed कमिट करता है। Linux के अंतर्गत संस्थापन सरल है:

$ easy_install --user unpushed

या

$ sudo easy_install unpushed

सिस्टम-वाइड स्थापित करने के लिए।

उपयोग सरल भी है:

$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

अधिक जानकारी के लिए देखें unpushed --helpया आधिकारिक विवरण । इसमें unpushed-notifyअनक्मिटेड और अनस्पेश्ड परिवर्तनों की ऑन-स्क्रीन अधिसूचना के लिए क्रोनजॉब स्क्रिप्ट भी है ।


5

सभी शाखाओं में सभी अप्रकाशित प्रतिबद्धों को आसानी से सूचीबद्ध करने के लिए आप इस कमांड का उपयोग कर सकते हैं:

 git log --branches  @{u}..

4

सदृश: असिंचित शाखाओं को देखने के लिए:

git branch --all --no-merged

उन पर संदेह किया जा सकता है लेकिन मैं cxreg द्वारा उत्तर देने की सलाह देता हूं


3

यदि उन कमिटों की संख्या, जिन्हें धक्का नहीं दिया गया है, एक सिंगल-डिजिट नंबर है, जो अक्सर होता है, सबसे आसान तरीका है:

$ git checkout

git आपको यह बताकर जवाब देता है कि आप अपने मूल के "आगे N कमिट" करते हैं। तो अब बस लॉग देखते समय उस नंबर को ध्यान में रखें। यदि आप "3 कमिट्स से आगे" हैं, तो इतिहास में शीर्ष 3 कॉमन अभी भी निजी हैं।


2

चीजों को करने का एक तरीका यह है कि उन कमिट्स को सूचीबद्ध किया जाए जो एक शाखा पर उपलब्ध हैं लेकिन दूसरे पर नहीं।

git log ^origin/master master

'^ ’वर्ण क्या करता है?
अरन मुल्होलैंड

@AranMulholland यह यहाँ नहीं के लिए खड़ा है।
एलेक्स

1

जैसा कि ऊपर कहा गया है:

git का मूल / स्वामी..हैड

लेकिन अगर आप git gui का उपयोग कर रहे हैं

गिनी इंटरफेस खोलने के बाद, "रिपॉजिटरी" चुनें -> इसके तहत " इतिहास देखें "

नोट: कुछ लोग CMD Prompt / Terminal का उपयोग करना पसंद करते हैं जबकि कुछ Git GUI (सादगी के लिए) का उपयोग करना पसंद करते हैं


git gui में विज़ुअलाइज़ विकल्प एक है।
राजेश कोल्हापुरे

-2

यहां मेरा पोर्टेबल समाधान (शेल स्क्रिप्ट जो अतिरिक्त इंस्टॉल किए बिना विंडोज पर भी काम करता है) है जो सभी शाखाओं के लिए मूल से अंतर दिखाता है: गिट-लिंच-लॉग

एक उदाहरण आउटपुट:

==== branch [behind 1]

> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

==== test [ahead 1, behind 1]

< commit 83a3161 (test)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit

लॉग के लिए पारित पैरामीटर, जैसे --onelineया --patchउपयोग किया जा सकता है।


-3
git show

आपके स्थानीय कमिट में सभी भिन्नताएँ दिखाएगा।

git show --name-only

स्थानीय प्रतिबद्ध आईडी और प्रतिबद्ध का नाम दिखाएगा।


3
git showकेवल सबसे हालिया प्रतिबद्ध दिखाता है, चाहे वह रिमोट से धकेल दिया गया हो या नहीं, यह आपको आपके सभी अनपेक्षित काम नहीं दिखाएगा।

-6
git diff origin

मूल को ट्रैक करने के लिए अपनी शाखा मान ली गई है, तब आपको अंतर दिखाना चाहिए।

git log origin

आपको कमिट्स का सारांश देगा।


3
git log originआपको दिखाएंगे कि आपके द्वारा पहले से ही धकेल दिए गए हैं , लेकिन यह उन कमिट्स को नहीं दिखाएगा , जिन्हें धक्का नहीं दिया गया है , जो मूल पोस्टर के लिए पूछ रहा था की तर्ज पर अधिक है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.