2017-07-14 18 views
11

Często używałem git diff origin.fatal: niejednoznaczny argument "origin": nieznana wersja lub ścieżka nie znajduje się w drzewie roboczym

W innym środowisku nie działa. Nie mam pojęcia dlaczego.

[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>...]' 

Status:

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

Piloty:

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

Wersja:

[email protected]> git --version 
git version 2.7.4 

Z "wersji git 1.8.1.4" git diff origin prac.

BTW widzę ten sam Komunikat o błędzie, jeśli mogę użyć "git diff origin/master"

BTW2, myślę, że "/ master" jest zbędna. Domyślnym domyślnym jest porównanie lokalnego oddziału z tym samym oddziałem w zdalnej witrynie.

+0

Sam zdalny podobny do 'origin' nie jest oczekiwany w żadnym poleceniu' git diff'. – ElpieKay

+0

@ElpieKay to działa, testowałem go z 'git w wersji 1.8.1.4' – guettli

+1

Próbowałem. Tak to działa. Wydaje się, że 'git diff origin' jest skrótem od' git diff master origin/master', jeśli bieżąca gałąź to 'master'. Jeśli bieżąca gałąź nie ma gałęzi zdalnego śledzenia, nie powinna działać. – ElpieKay

Odpowiedz

12

Polecenie git diff zwykle oczekuje, że jeden lub więcej skrótów zatwierdzających wygeneruje różnicę. Wygląda na to, że podajesz nazwę pilota.

Jeśli masz gałąź o nazwie origin, wartość skrótu zatwierdzenia na końcu gałęzi byłaby użyta, jeśli podałeś origin do komendy diff, ale obecnie (bez odpowiedniej gałęzi) polecenie wyświetli błąd widzenie. Może się zdarzyć, że wcześniej pracowałeś z oddziałem o nazwie origin.

Alternatywny, jeśli starasz się zobaczyć różnicę między lokalnym oddziale, a oddział na pilocie byłoby coś wzdłuż linii:

git diff origin/<branchname>

git diff <branchname> origin/<branchname>

Or other documented variants .

Edit: Po przeczytaniu dalej, zdaję sobie sprawę, że jestem nieco źle, git diff origin jest skrótem diffing na czele określonego pilota, więc git diff origin = git diff origin/HEAD (compare local git branch with remote branch?, Why is "origin/HEAD" shown when running "git branch -r"?)

Brzmi jak twoja pochodzenie nie ma HEAD, w moim przypadku dzieje się tak dlatego, że mój pilot to repozytorium, które nigdy nie miało zestawu HEAD.

Uruchomienie git branch -r pokaże Ci, czy ustawione jest origin/HEAD, a jeśli tak, to na której gałęzi wskazuje (np. origin/HEAD -> origin/<branchname>).

+2

dziękuję bardzo. Tak, 'git branch -r' jest puste w jednym repozytorium, aw drugim nie jest puste. Dlatego 'git diff origin' działa w jednym repozytorium, a nie w drugim. – guettli

+0

To ma sens, nauczyłem się też czegoś = D – Chris

1

ten pracował dla mnie na wygraną zastąpić REL_PATH_TO_FILE ze względną ścieżkę do pliku, aby usunąć https://help.github.com/articles/removing-sensitive-data-from-a-repository/ Docs powiedzieć pełną ścieżkę - ale to dla mnie błędami -tak Próbowałem ścieżkę rel i to działało.

<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 
Powiązane problemy