2011-12-19 68 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