我知道stackoverflow中有很多类似的问题,但在问这个问题之前我做了一些研究,找不到直接回答我的问题。
我的情况如下:我有一个私人回购,并且正在与另一位开发人员合作。因此,我们是两个使用私有存储库的开发人员,这意味着push -f
不是世界末日。这个存储库很快就会公开,此时我们会修改错误并做一些改变以改变历史记录(这样,一旦存储库上市,人们就可以使用可靠的工作提交基础)。
昨天我将提交推送到master
,由于某种原因,只能在我的机器和开发服务器中运行,但不能在我的同事机器和生产服务器中运行。
因此我们从先前的提交中分叉了一个分支(album
)。我的同事在这个分支上多次提交。他们将分支推送到远程存储库(我们需要这样做以便将他的工作版本发布到生产服务器),我们最终得到了类似的东西:
master: (previous commits) - C1 - C2 (my "troubled" commit)
\
album: C3 - C4 - C5 - C6
在正常情况下,我会结帐master
(其中我的问题提交C2
是头部)并将album
合并到其中。
但这会让C2
留在历史上,而且,因为我们无法弄清楚我们的生活,为什么我的提交打破了环境,我们觉得最好“收获”提交其他方式。
我在想做什么:
album
album
push -f
master 期望的结果:
master: (previous commits) - C1 - C3 - C4 - C5 - C6 - C2'
应修复C2'
并在所有机器上工作。
所以,我在思考吗?如果没有,那里的git大师会怎么处理这个?
谢天谢地。
答案 0 :(得分:2)
那就行了,我会这样得到结果:
$ git checkout album
$ git cherry-pick master
$ git checkout -B master
和ref清理相同。
答案 1 :(得分:1)
如果我理解正确,我相信你想要的是:
此时C2暂时孤立,无法通过您的分支名称访问。现在,您可以像平常一样合并分支album
。
现在,为了解决孤立的C2提交问题,您需要:
这将使您的主分支看起来像:
master: (previous commits) - C1 - C3 - C4 - C5 - C6 - C2
答案 2 :(得分:0)
你可以在主人之上进行改造,是的。这应该适用于分支的位置。就个人而言,我会在一个新目录中克隆回购,执行干预运行并确认结果。如果完全符合要求,请重复正常工作目录中的步骤。
干杯