Respostas:
O seguinte funciona para mim:
git diff master:foo foo
No passado, pode ter sido:
git diff foo master:foo
--para separar parâmetros dos argumentos do caminho? git diff -- master:foo foo
git diff -- master:foo foonão funciona - parece tratar o arg master:foocomo um nome de arquivo inexistente (e o ignora) em vez de um arquivo em uma ramificação. Tente alternar os últimos 2 argumentos - se funcionou, a comparação de diferenças deve ser revertida, mas a saída não muda.
git diff master:foo foomas não vice-versa. Eu também não entendo. Com o git 1.7.9.5 / Ubuntu 12.04, pelo menos, posso fazer git diff -R master:foo foopara obter o diff que realmente quero. Quando tento isso com o msysgit 1.9.4 / Windows 7 x64, recebo fatal: unable to read 0000000000000000000000000000000000000000. Sem -R, recebo a mesma mensagem de erro que você com git 1.7.9.5, mas com 1.9.4 recebo fatal: master:foo: no such path in the working tree.
Você está tentando comparar sua árvore de trabalho com um nome de ramificação específico, então deseja o seguinte:
git diff master -- foo
Que é desta forma de git-diff (consulte a página de manual do git-diff)
git diff [--options] <commit> [--] [<path>...]
This form is to view the changes you have in your working tree
relative to the named <commit>. You can use HEAD to compare it with
the latest commit, or a branch name to compare with the tip of a
different branch.
Para sua informação, também existe uma opção --cached(aka --staged) para visualizar o diff do que você organizou, em vez de tudo na sua árvore de trabalho:
git diff [--options] --cached [<commit>] [--] [<path>...]
This form is to view the changes you staged for the next commit
relative to the named <commit>.
...
--staged is a synonym of --cached.
Além disso: git diff master..feature foo
Uma vez git diff foo master:fooque não funciona em diretórios para mim.
git diff branch1:foo master:foo
git difftool tag/branch filename
git diff mybranch master -- file
também deve funcionar
git diff deployment master -- filee git diff master deployment -- filefunciona conforme o esperado com quaisquer 2 ramificações .
Para ver as alterações locais comparar com sua filial atual
git diff .
Para ver o local alterado, compare com qualquer outro ramo existente
git diff <branch-name> .
Para ver as alterações de um arquivo específico
git diff <branch-name> -- <file-path>
Certifique-se de executar git fetchno início.
git diff, eu sempre penso em stackoverflow.com/questions/5256249/git-diff-doesnt-show-enough/…