Git: 如何将 git 所有差异结果从一个分支添加到另一个分支?

Git: How to add git all diff results form one branch in to another?

有一个漫长的开发过程,许多提交和推送到 GitLab(我想这与 GitHub 相同)。在 develop 分支最后合并到 master 分支后,我不得不在 master 分支中进行反向处理。不知何故,现在两个分支中的所有最新更改都丢失了。幸运的是,我的电脑中有一个包含所有最新更改的本地副本。但是 Git 认为所有更改都丢失的最后一点是我想要的,我无能为力。 我电脑的现状:

$ git branch -a
  develop
* localdev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master
  remotes/origin/revert-4b75add3

localdev 是我创建的一个本地分支,它有所有最新的更改,但是 Git 认为它们太旧了,因为我引用了一些新的提交试图在 develop 分支中做正确的事情,该分支被推入 GitLab.

所以我认为我需要的只是以某种方式比较 localdev 分支和 develop 分支并将所有差异添加到 develop 分支。然后我希望我能够提交并将所有更改推送到 GitLab。怎么做?

另外 reset --hard 是困难的方法,我不想这样做,因为很难跟踪最早的更改,而且我会丢失那些提交(我猜),所以我想避免这种情况.

为了帮助您查看两个分支之间的提交,您可以使用 git diff

比较两个分支

一个例子 git diff branch1..branch2

此示例将向您显示“branch2”具有但不在“branch1”中的所有提交

另一种比较方式是,

git diff branch1...branch2

这是使用带有三个点的 git diff,它将右分支的顶部(HEAD)与两个分支的共同祖先进行比较。

要查看两个分支之间的提交差异,请使用 git log 命令并指定要比较的分支。

git log branch1..branch2

要查看两个分支之间写入文件的差异,请使用 git diff 命令,指定两个分支和文件名。

git diff master..feature -- <file>

如果您想从另一个分支添加提交,可以使用 git cherry-pick 命令。

所以最后我得到了这些命令:

(develop)
git reset --hard b8a61c3e
git push -f origin develop

gitlab master 临时关闭保护

(master)
git reset --hard b8a61c3e
git push -f origin master

现在一切正常。从我的 localdev 分支手动添加了一些其余更改到 develop。成功推送并与 master 分支合并。 谢谢大家的帮助。