2011-12-19 69 views
6

此命令工作正常:如何在git中使用完整路径?

git diff relative/path/to/file.ext 

但是,如果使用的完整路径,git的说,路“是外库”:

git diff /full/path/then/relative/path/to/file.ext 

我想混帐没有找到一个.git目录/ full,所以这就是失败的原因。

但是我怎么让git理解完整的路径,就像subversion一样呢?

更新:Git版本1.7.0.5

更新:这些文件永远是我在仓库里,而我目前的目录也是我的仓库里面!它仍然给出了这个错误。

+0

你能解释一下你为什么需要这个? – Mat 2011-12-19 11:33:24

+1

“外部存储库”通常意味着当前目录不是git存储库的一部分,所以git命令不起作用。改成一个git工作目录,它应该适用于任何路径。 – poke 2011-12-19 11:51:55

+0

@Mat有时我会遇到存储库中文件的完整路径。我不想为了区分而选择正确的路径部分,我只想在终端中双击以选择整个文件路径,将其粘贴回来,并在其中添加'git diff'行首。这要快得多。 – 2011-12-20 12:59:08

回答

0

如果你想在git repo之外区分文件,你应该使用像opendiff这样的diff工具,并将repo中的文件与存储库之外的其他文件进行比较。

你不能比较外部文件,因为git不会在文件中“思考”。

+0

你可以简单地运行'git diff --no-index - file1 file2' – knittl 2011-12-19 11:35:36

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

版本1.7.0.5。在你的例子中,〜/ git是你的git工作目录的根目录?我尝试了所有的建议,但我仍然遇到同样的错误。 – 2011-12-20 13:04:18

+0

@WillSheppard:yep'〜/ git'是包含worktree和.git目录的顶级目录 – knittl 2011-12-20 15:46:21

+0

我的git在'--work-tree'中不理解'〜';我不得不使用完整的路径。 – sam 2014-05-02 16:30:04