【问题标题】:How can I compare local repo between remote repo?如何比较远程仓库和本地仓库?
【发布时间】:2018-02-06 18:20:16
【问题描述】:

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

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

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

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

我该如何解决?

【问题讨论】:

    标签: git unix


    【解决方案1】:

    如果您克隆了一个分支(例如,将其称为“mybranch”),那么当您克隆 repo 时,您将拥有一个名为“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 并选择任意两个提交哈希/标签/分支进行比较。

    更新

    我可能误解了这个问题。从您的 cmets 来看,我认为您正在尝试对 contents 已更改的文件进行比较。您可以使用 --diff-filter 选项:

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

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

    【讨论】:

    • 如果我从另一个目录(没有 .git)执行 git diff。我需要添加什么标志? @code_fodder
    • 如果你不想只 CD 进入你的 git 目录,你可以使用 "-C 选项:git -C /your/git/dir diff HEAD~1 HEAD`
    • 我的建议和你的有什么不同?
    • 啊哈 - 更新了答案,我想我没有完全理解你的问题。我认为您写的是“上下文”而不是“内容”?
    • 我不知道上下文和内容有什么不同。我的意思是,如果我更改文件,那么它会显示给我
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2012-06-26
    • 2016-10-09
    相关资源
    最近更新 更多