1

我知道stackoverflow中有很多类似的问题,但在问这个之前我做了一些研究,找不到直接回答我的问题。

我的情况如下:我有一个私人仓库,并且正在与另一位开发人员合作。因此,我们是两个使用私有存储库的开发人员,这意味着这push -f不是世界末日。该存储库将很快公开,此时我们评估修复错误并进行一些返工以更改历史记录(这样,一旦存储库公开,人们就可以使用坚实的工作提交基础)。

昨天我已经推送了一个提交master,由于某种原因,它只能在我的机器和我们的开发服务器中工作,但不能在我的同事机器和生产服务器中工作。

album因此,我们从之前的提交中分出了一个分支 ( )。我的同事在这个分支上提交了几次。他们将分支推送到远程存储库(我们需要这样做才能将他的工作版本发布到生产服务器),我们最终得到了这样的结果:

master: (previous commits) - C1 - C2 (my "troubled" commit)
                              \
album:                        C3 - C4 - C5 - C6  

在正常情况下,我会签出master(其中我的麻烦提交C2是头部)并合并album到其中。

但这会留C2在历史上,另外,由于我们无法弄清楚我们的生活,为什么我的提交破坏了环境,我们觉得最好以相反的方式“重新获得”提交。

我在想什么:

  • 查看album
  • rebase master 在它之上
  • album本地和远程删除
  • push -f掌握

期望的结果:

master: (previous commits) - C1 - C3 - C4 - C5 - C6 - C2' 

C2'应该在所有机器上固定和工作的地方。

所以,我想清楚了吗?如果没有,那里的 git 大师将如何处理这个问题?

非常感谢你。

4

3 回答 3

2

就可以了,我会这样得到结果:

$ git checkout album
$ git cherry-pick master
$ git checkout -B master

和 ref 清理是相同的。

于 2013-11-09T02:54:16.710 回答
1

如果我理解正确,我相信你想要的是:

  • git结账大师
  • git reset --hard <sha1 of C1>

此时 C2 暂时处于孤立状态,无法通过您的分支名称访问。现在您可以像往常一样合并您的分支album

现在,要解决孤立的 C2 提交的问题,您需要:

  • git结账大师
  • git cherry-pick <sha1 of C2>

这将使您的主分支看起来像:

master: (previous commits) - C1 - C3 - C4 - C5 - C6 - C2

于 2013-11-09T02:40:09.547 回答
0

您可以在 master 之上进行 rebase,是的。对于分支所在的位置,这应该可以正常工作。就个人而言,我会将 repo 克隆到一个新目录中,对 rebase 进行空运行,然后确认您的结果。如果一切正常,请在您的正常工作目录中重复这些步骤。

干杯

于 2013-11-09T02:19:10.777 回答