2017-07-14 7 views
11

मैंने अतीत में git diff origin का उपयोग किया था।घातक: संदिग्ध तर्क 'उत्पत्ति': अज्ञात संशोधन या पथ काम करने वाले पेड़ में नहीं

एक अलग वातावरण में यह काम नहीं करता है। मेरे पास कोई सुराग नहीं है क्यों।

[email protected]> git diff origin 
fatal: ambiguous argument 'origin': unknown revision or path 
     not in the working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...]' 

स्थिति:

[email protected]> git status 
On branch master 
nothing to commit, working directory clean 

दूरस्थ:

[email protected]> git remote -v 
origin https://example.com/repos/djangotools (fetch) 
origin https://example.com/repos/djangotools (push) 

संस्करण:

[email protected]> git --version 
git version 2.7.4 
"Git संस्करण 1.8.1.4" git diff origin काम करता है के साथ

BTW मैं एक ही त्रुटि संदेश अगर मैं "Git diff मूल/मास्टर"

BTW2 का उपयोग देखते हैं, मुझे लगता है कि "/ मास्टर" अनावश्यक है। सैन डिफ़ॉल्ट स्थानीय शाखा की तुलना दूरस्थ साइट पर उसी शाखा के साथ करना है।

+0

किसी भी 'git diff' कमांड में अकेले' मूल 'जैसे रिमोट की अपेक्षा कभी नहीं की जाती है। – ElpieKay

+0

@ एल्पीके यह काम करता है, मैंने इसे 'गीट संस्करण 1.8.1.4' – guettli

+1

के साथ परीक्षण किया। मैंने कोशिश की। हाँ यह काम करता है। ऐसा लगता है कि मौजूदा शाखा 'मास्टर' है, तो 'गिट डिफ मूल' 'गिट diff मास्टर मूल/मास्टर' के लिए छोटा है। यदि वर्तमान शाखा में कोई दूरस्थ ट्रैकिंग शाखा नहीं है, तो यह काम नहीं करना चाहिए। – ElpieKay

उत्तर

12

git diff कमांड आमतौर पर एक या अधिक प्रतिबद्ध हैश को आपके diff उत्पन्न करने की अपेक्षा करता है। आप रिमोट का नाम आपूर्ति कर रहे हैं।

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

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

git diff origin/<branchname>

git diff <branchname> origin/<branchname>

Or other documented variants

संपादित करें: तो git diff origin = git diff origin/HEAD (compare local git branch with remote branch?, Why is "origin/HEAD" shown when running "git branch -r"?)

यह अपने तरह लगता है आगे पढ़ने के बाद, मुझे लगता है मैं थोड़ा गलत हूँ, git diff origin, निर्दिष्ट दूरदराज के सिर के खिलाफ diffing के लिए आशुलिपि है मूल में कोई सिर नहीं है, मेरे मामले में ऐसा इसलिए है क्योंकि मेरा रिमोट एक नंगे भंडार है जिसने कभी सिर सेट नहीं किया है।

git branch -r रनिंग आपको दिखाएगा कि origin/HEAD सेट है, और यदि ऐसा है, तो यह किस शाखा पर इंगित करता है (उदा। origin/HEAD -> origin/<branchname>)।

+2

आपको बहुत बहुत धन्यवाद। हां, एक गिट शाखा-'एक रेपो में खाली है और दूसरी तरफ यह खाली नहीं है। यही कारण है कि 'गिट diff उत्पत्ति' एक रेपो में काम करता है और दूसरे में नहीं। – guettli

+0

यह समझ में आता है, मैंने कुछ भी सीख लिया = डी – Chris

1

यह जीत पर मेरे लिए काम किया दूर करने के लिए https://help.github.com/articles/removing-sensitive-data-from-a-repository/ डॉक्स पूरा पथ का कहना है कि फ़ाइल के सापेक्ष पथ के साथ REL_PATH_TO_FILE की जगह - लेकिन यह है कि मेरे लिए errored है, ताकि मैं rel पथ की कोशिश की और यह काम किया।

<from the repo dir>git filter-branch --force --index-filter "git rm --cached --ignore-unmatch REL_PATH_TO_FILE" --prune-empty --tag-name-filter cat -- --all 
संबंधित मुद्दे