如何比较远程仓库之间的本地仓库?

时间:2017-08-29 10:22:37

标签: git unix

我想在远程仓库之间比较我的本地仓库(在git clone之后)。 我用命令:

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

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

我有两个问题: 1.如果我更改文件名,它会告诉我。 2.如果我在远程仓库中添加/更改文件,它将显示给我。我想看看相对于我当地的回购的变化。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

然后你在本地检查分支,你将有一个名为“mybranch”的分支 - 你做了修改,然后你可以在两个分支之间做差异:

git diff origin/mybranch mybranch

或者您可以像在示例中一样查看HEAD。当您克隆回购时,您将在HEAD。当你提交某些内容时,你仍然会在HEAD中,但之前的提交可以作为HEAD~1进行访问。所以你git diff命令可以是:

git diff HEAD~1 HEAD

或者只是查看日志git log或图形视图git log --oneline --graph --all --decorate并选择任意两个commit-hash / tags / branches进行比较。

<强>更新

我可能误解了这个问题。根据您的评论,我认为您正在尝试为内容已更改的文件执行差异操作。您可以使用--diff-filter选项:

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

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