2017-08-29 116 views
0

我想比较我的本地回购(后git克隆)之间的远程回购。 我使用命令:如何比较远程回购之间的本地回购?

git add newfile 
git commit -m "my change" 
git diff HEAD origin --name-only 

我想仅比较更改文件的上下文。 不重命名。

我有两个问题: 1.如果我更改文件的名称,它会显示我。 2.如果我添加/更改远程回购文件,它会显示我。我想看到相对于我本地回购的变化。

我该如何解决?

回答

0

如果您克隆了一个分支(例如将其称为“mybranch”),那么当您克隆回购时,您将有一个名为“origin/mybranch”的分支。这实际上是远程分支的状态。

然后你在本地检出的分支,你会叫一个分支“mybranch” - 你做你的修改,然后你可以做的两个分支之间的差异:

git diff origin/mybranch mybranch

或者你可以简单看你的例子中的HEAD。当你克隆回购时,你将在头上。当你提交一些东西时你仍然会在HEAD上,但是前面的提交可以作为HEAD〜1来访问。所以,你的git diff命令即可:

git diff HEAD~1 HEAD

或者只是看看日志git log或图形视图git log --oneline --graph --all --decorate,并挑选任何两个提交哈希的/标签/分支比较。

更新

我可能误解了这个问题。从您的意见,我认为你只是试图为内容已经改变的文件做差异。你可以使用--diff-filter选项:

git diff --diff-filter=M HEAD~1 HEAD

其中 “M” 是修饰。如果需要,也可以使用“R”进行重命名(并且可以组合多个选项,例如用于修改和重命名文件的git diff --diff-filter=MR HEAD~1 HEAD)。

+0

如果我从另一个目录(其中没有.git)执行git diff。我需要添加哪个标记? @code_fodder – Alex

+0

如果你不想只把CD放到你的git目录中,你可以使用“-C-选项:'git -C/your/git/dir diff HEAD〜1 HEAD' ' –

+0

我的建议和你的? – Alex