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 分支合并。
谢谢大家的帮助。
有一个漫长的开发过程,许多提交和推送到 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 分支合并。 谢谢大家的帮助。