我对git branch管理有点困惑,可以使用一些帮助。我知道SO上有几个相关的问题,但我不确定这种情况是否完全相同,我不想搞砸。
我们有一个名为'master'的分支,用于表示当前正在制作的内容。我们有另一个名为“development”的分支,代表我们的测试服务器上的内容,并包含任何可用于测试的当前开发/错误修复。在处理用户故事或错误修复时,我们的开发人员应该为每个故事/修复创建一个分支。当它准备好进行测试时,它将合并到开发分支中并更新测试服务器。当故事/修复移动到生产时,它将合并到主分支。
我们的一位开发人员最近将8个更改直接推送到主分支。此后,这些更改已从master合并到开发分支。
我需要知道的是:
编辑:我还应该提一下,我已经看到了this post这可能是我需要的,但是再次希望得到确认,我仍然不确定这将如何影响合并到开发部门。
仅供参考,我正在使用tortoisegit(但不必)。
感谢您的任何建议。
答案 0 :(得分:1)
最好的办法是使用git revert c1..c2
恢复8次提交的范围,其中c1
和c2
分别代表您要还原的第一次和最后一次提交。这将撤消这些提交的效果,而无需删除提交本身。这样,您合并到开发分支仍然有效。
请注意,使用此方法,您的master
历史记录中将有8个更多次提交,每次恢复一次。如果您想要只有一个提交同时撤消所有8个提交,并且自8以来没有“合法”提交,那么请执行以下操作:
git checkout -b temp-branch <SHA of last good commit>
git reset --soft master
git commit -m "Undoing 8 commits"
git checkout master
git merge temp-branch
git branch -d temp-branch
编辑:将'goof'改为'good'!