这可能是一个部分独特的情况,但我想重新基地,并认为我可能打破“阶段”回购分支。
注意,我是唯一的开发人员,不要担心任何其他开发人员都有这些签出。
我们有201张票,还有407张紧急车票。201和407(按这个顺序)已经被提交,合并到阶段(分支),然后被推到舞台上。
这两张票都没能在舞台上通过QA,所以它们都需要修正。407成了紧急解决方案。201是等到407号开始生产。我不得不回到沙箱(树枝)去修理它。它现在是固定的,并准备承诺。201需要等待。201是在407之前完成的,并出现在沙箱日志和舞台日志上。
我担心如果我暂时将201重新放在沙箱上(不太确定这是否是最好的方法)来完成407的修复,那么当我去合并的时候,推送会发生一些未知的事情,而推送(或合并)会以未知的错误抱怨,因为201 (只是在沙箱的基础上重新构建)在舞台上遇到了障碍。
有没有办法重新定位(201票),为407号登台让路?已经在舞台上的201会怎样呢?
发布于 2014-09-19 20:53:40
如果我正确理解您的场景,您将有两个特性分支按照特定的顺序合并到您的主要分支中,并且您想知道是否可以以不同的顺序再次合并它们(添加了额外的提交)。是那么回事吗?
这应该是绝对好的,只要它们不影响相同(或相邻的)代码行,在这种情况下,您当然会遇到冲突(不管合并的顺序如何)。但是,如果您想要一个更干净的历史记录,则始终可以在合并任何一个分支之前将暂存分支重置为它所处的状态,然后再将它们合并(按任何顺序)。
但是,如果有疑问,只需确保本地克隆中的所有分支都与您的权威远程更新,那么如果您确实在本地遇到任何合并问题,您只需从远程重置受影响的分支(在此意义上有效地充当备份)。如果需要在不接触原件的情况下进行实验,也可以创建分支的本地备份,例如
$ git checkout stage
$ git checkout -b stage_bak如果您愿意,甚至可以创建整个存储库的另一个本地克隆。不管你怎么做,我都发现真正找出你能用Git做什么的最好方法就是尝试一些东西,打破它,重新设置它,然后再试一次。
祝好运!
发布于 2014-09-19 23:20:23
重写历史是一项棘手的业务。就我个人而言,我将尝试保持简单 (特别是在紧急情况下),并将这些修复作为新的提交,分别明确标记为"Fix 407“和"Fix 201",然后将它们合并回您的STAGING分支。毕竟,这些新的提交会有多糟糕?
如果您真的想重写以前的提交.
其中一种方法是在之前回滚到提交,这是两个分支中最初提交的票证201 。既然这个提交被破坏了,人们可能会争辩说,它不应该停留在阶段,单独生产。您可以像这样利用git reset或git branch -f:
git reset --soft commit_sha_of_201_parent或
git branch -f staging_branch commit_sha_of_201_parent
git branch -f sandbox_branch commit_sha_of_201_parent回滚之后,您可能会发现git stash在管理那些(临时)回滚未提交的更改方面很有帮助。现在,您可以增量地修复代码;首先是票证407,然后是票证201。最后,它们可以合并回您的staging分支。
正如@Tony所指出的,在尝试之前,你应该制定克隆/备份你的东西的计划。
祝好运。
https://stackoverflow.com/questions/25941122
复制相似问题