【发布时间】:2016-11-02 03:08:09
【问题描述】:
我有两个分支develop 和master。开发中有很多提交不在master 中。虽然我需要让develop 分支看起来与master 完全相同。为了保留发生在develop 中的所有更改,我将从develop 创建新分支,这样所有这些更改都不会丢失。
但是在“复制”develop 之后,我怎样才能安全地重置或恢复为 master 的样子?
我看到了这个:Git: reset/revert a whole branch to another branches state?
所以要重置,我可以这样做:
git checkout develop
git reset --hard master
但问题是develop 分支已经被推送到远程,还有其他人已经拉了develop。
也许有更安全的方法可以使用 revert 或其他方式来做到这一点?但我想以一种可以恢复到 master 状态的方式恢复(如果可能),而不是手动选择每个提交,因为一些最新的提交需要保存在 develop 中,因为它们来自主服务器(修补程序)。
所以develop 上的提交历史看起来像这样(最上面的意思是按日期的最新提交):
commit hotfix2 - in both develop and master
some other commits that are only in develop
commit hotfix1 - in both develop and master
some commits that are only in develop
all commits that came when develop was created from master
【问题讨论】:
-
那么,您要做的是撤消所有仅在开发中完成的提交? (例如,撤消历史记录中的“一些提交”和“一些其他提交”)
-
@poke 好吧,是的,但是有没有比完成所有提交并选择我需要撤消的提交更简单的方法?这只是一个示例,在实际情况下,有很多提交需要撤消,并且中间有一些提交需要保留。使用
reset,很简单,我只需指定分支,它就会重置为与master完全一样。
标签: git branch git-reset git-revert