此命令正常工作:
git diff relative/path/to/file.ext
但是如果我使用完整路径,git说路径“在存储库外”:
git diff /full/path/then/relative/path/to/file.ext
我认为git没有在/ full中找到.git目录,所以这就是它失败的原因。
但是我如何让git理解完整路径,比如subversion呢?
更新:git版本1.7.0.5
更新:这些文件总是在我的存储库中,我当前的目录也在我的存储库中!它仍然会出错。
答案 0 :(得分:13)
您使用的是哪个版本的git?无论路径的格式如何,它都应该有效,即
cd git
git diff -- git.c
git diff -- ~/git/git.c
但是你必须在git存储库中才能工作!如果您绝对需要从存储库外部执行git命令,请使用--work-tree
和--git-dir
开关:
git --work-tree=~/git --git-dir=~/git/.git diff -- git.c
git --work-tree=~/git --git-dir=~/git/.git diff -- ~/git/git.c
答案 1 :(得分:0)
您是否使用了不区分大小写的文件系统,例如使用默认设置的MacOSX?
git rev-parse --show-toplevel
向您显示的路径是否具有不同的大小写,例如/full/path/Then
。在这种情况下,您必须使用Then
重命名mv /full/path/Then /full/path/then
或调用git diff /full/path/Then/relative/path/to/file.ext
如果您重命名目录,则在没有程序打开目录或其内容时更安全。