Git: 将所有本地提交与远程仓库版本进行比较

13 浏览
0 Comments

Git: 将所有本地提交与远程仓库版本进行比较

我对Git还不太熟悉,我想做的事似乎是可能的。基本上,我一直在使用克隆的存储库进行工作,并进行了许多本地提交。是否有一种方法可以查看我所有更改的“总和”与原始存储库版本的差异?我认为这是可能的,因为当我执行push时,Git实际上会这样做。

以下是我想要做的事的示例:在gitk中,我会看到类似于这样的内容:

* - [mybranch] 在answers.txt末尾添加了“42”(本地提交)

* - 在my.txt末尾添加了“Hello World”(本地提交)

* - 在my.txt开头添加了“C#/.NET”(本地提交)

* - <[RemoteRepo]>(我克隆的原始存储库)

我如何查看与我从RemoteRepo签出的原始版本相比,对my.txtanswers.txt所有更改的差异的总和?

0
0 Comments

问题的出现原因:用户想要比较本地所有的提交与远程仓库版本之间的差异,但是不清楚应该使用哪个命令来实现。

解决方法:可以使用以下命令来比较本地所有提交与远程仓库版本之间的差异:

1) git diff origin/master master

2) git diff origin/master..master

3) git diff origin/master...master

其中,第一个和第二个命令是相同的,用于显示主分支和远程主分支之间的更改。第三个命令用于显示自上次推送以来主分支上发生的更改,这可能是您需要的最合适的命令。

但是有用户反馈说,使用1和2命令时显示的差异并不是他们需要的,因为这些差异实际上是来自远程仓库的其他人的更改。因此,他们选择使用了git difftool命令来代替git diff命令。

此外,还有一个用户提到origin/master...origin/master是一个空集合,可能是在编辑时语法出错了。他们猜测是想输入origin/master...master。

还有一个用户对命令执行后的环境感到困惑,不清楚是否会打开vi/vim编辑器。对此,没有给出明确的答案。

最后,有用户问是否需要将主分支作为当前检出的分支。关于这个问题没有明确的回答。

0
0 Comments

在使用Git进行版本控制时,有时候我们需要比较本地提交与远程仓库版本的差异。下面介绍了一个简单的命令来实现这个功能。

问题的原因:

要比较本地提交与远程仓库版本的差异,我们需要找到一个合适的命令。然而,Git提供的命令众多,有时候我们可能会忘记具体的命令,或者不知道哪个命令能够实现我们的需求。

解决方法:

在这种情况下,最简单且易于记忆的命令是git diff origin。这个命令会显示你最初拉取的版本(origin)与当前工作的分支之间的差异,默认为master分支。

通过运行这个命令,你可以轻松地比较本地提交与远程仓库版本的差异。这个命令简单直观,不需要记忆太多的参数和选项,非常适用于日常开发工作中的版本比较需求。

0
0 Comments

问题的出现原因:用户想要比较本地所有提交与远程仓库版本之间的差异。

解决方法:使用以下命令进行比较:

 git log --left-right --graph --cherry-pick \
      --oneline branchname...remote/branchname

其中,branchname是本地分支的名称,remote/branchname是远程分支的名称。

此方法会显示出本地提交和远程提交的差异。

如果想要得到类似于gitk、git-gui和gitweb的结果,可以加上--decorate选项。

如果想要比较所有本地分支的所有本地提交与远程分支的所有远程提交,可以使用以下命令:

git log --decorate --pretty=oneline --all --not --glob=refs/remotes --no-walk

如果想要查看合并提交,可以加上--boundary选项。

还可以使用其他高级查询功能,比如按日期、作者、关键词等过滤结果。

如果想要查看本地stash中的提交,可以使用以下命令:

git log $(git rev-list -g stash) --not --glob=refs/remotes 

如果想要查看其他不可达的提交,可以使用以下命令:

git log $(git fsck --unreachable --full  --lost-found |
              grep ' commit ' | cut -d' ' -f3) \
    --no-walk --not --glob=refs/remotes --oneline --decorate

对于脚本编写,可以使用git rev-list替代git log,以获取提交的哈希值。

以上是解决该问题的方法。

0