2012-01-09 57 views
1

说我创建了一个feature-x分支并与master分支合并或重新分区。现在将来有可能通过git删除通过feature-x分支添加的所有更改吗?如何从历史档案副本中的主分支中撤销合并或重新分支的分支

这是一个常见的功能,我们在有限的时间内添加一些更新并将其删除。如果可能的话,有人可以帮忙。

在此先感谢。

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

回答

1
man git-revert 

git revert将重播相反的提交。

+0

感谢您的回复......但git revert将撤消我所做的所有近期提交 – user434509 2012-01-09 16:10:15

+0

@ user434509:它不会 - 'git revert f00'创建一个新的提交,它只是反转提交'foo'引入的更改。 – 2012-01-09 16:36:59

+0

很棒......它的工作。谢谢。 – user434509 2012-01-09 17:51:40

1

那么你可以使用git revert来撤销提交。这将创建一个新的提交,它基本上解除了旧提交的更改。或者您可以使用git rebase从历史记录中删除提交。但是不应该在共享存储库来完成,因为它会改写历史,所以如果有人改写之前检查出来,现在拉他/她很可能会得到可怕的合并冲突

+0

感谢您的回复......但git恢复将撤消我所做的所有最近的提交 – user434509 2012-01-09 16:10:23

+0

@ user434509:不,你可以告诉git恢复哪些提交恢复(并且只有那些) – Grizzly 2012-01-09 17:44:52

0

有没有可能给,而不是合并/衍合特性分支变成高手,只是使用功能分支作为你的产品代码,合并掌握到它的必要吗?然后,当你完成你的功能分支时,回到使用master作为生产代码。

如果我理解正确git rebase,它不存储有关的两个分支的共同祖先的任何信息,所以这将是困难的,两人再次分开。我不能评论使用git revert来撤消合并提交,只能说它听起来不错。

+0

是的,这是一个选项...但在这里我必须再次更改代码...然后从主分支中提取更改,然后再次与主设备重新绑定。我正在寻找一些我不需要再次触摸代码并通过git进行必要更改的内容。 – user434509 2012-01-09 16:09:22

0

对于一个工作流程,使您在做什么,开箱即用,在这里看到:

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

候选发布版的建设,使狠使用rerere将帮助您得到这个打算。

它很容易为你现在创建一个新的分支和重做你之前做了合并,省去不必要的一个。你可能需要重新配置其中的一些。现在“拯救”主分支看起来太费劲了。

相关问题