如何从历史记录中的git中从master分支撤消合并或重新分支的分支

时间:2012-01-09 15:11:12

标签: git

假设我创建了一个feature-x分支,并与master分支合并或重新绑定。现在将来有可能删除我通过git通过feature-x分支添加的所有更改吗?

这是一个常见功能,我们会在有限的时间内添加一些更新,然后将其删除。如果可以使用git,可以帮助一些人。

提前致谢。

我将通过一个例子更清楚。假设我在feature-x分支中添加了一个poll脚本,并使用master分支对其进行了重新设置,我将其用作生产分支。我可能只使用投票脚本说1个月。在我之间做了几次提交,用master分支重新定位了新的分支。现在1个月后,我想从主分支中完全删除该轮询脚本,但在主分支中保留所有新的更改(新提交)。

4 个答案:

答案 0 :(得分:1)

您可以使用git revert来撤消提交。这将创建一个新的提交,基本上撤消旧提交的更改。或者您可以使用git rebase删除历史记录中的提交。但是,这不应该在共享存储库上完成,因为它会重写历史记录,所以如果有人在重写之前已经签出并且现在拉出他/她可能会发生可怕的合并冲突

答案 1 :(得分:1)

man git-revert

git revert将反向重播提交。

答案 2 :(得分:0)

是否有可能,而不是将您的功能分支合并/重新定位到主服务器,只需使用功能分支作为您的生产代码,根据需要将主服务器合并到其中?然后,当您完成功能分支后,请返回使用master作为生产代码。

如果我正确理解git rebase,它不会存储有关两个分支的共同祖先的任何信息,因此很难再将它们分开。我不能评论使用git revert撤消合并提交,除非说它听起来是正确的。

答案 3 :(得分:0)

对于启用开箱即用功能的工作流程,请参见此处:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

构建候选版本并不断使用rerere将帮助您实现这一目标。

您现在可以更轻松地创建新分支并重做之前执行的合并,而不会丢弃不需要的分支。你可能需要改变一些。现在“拯救”主分支似乎太费劲了。