2017-02-08 55 views
3

我犯了一个愚蠢的错误,我不知道解决它的最好方法。以下是我所做的:壁球上的数百个旧提交

  • 基于样板创建了一个Web项目。
  • git的删除,以使我的初始提交
  • 几个月和我自己的项目约200犯下后来,我合并上游样板分支到我的项目的本地分支之前删除所有的历史(约500提交)。这增加了来自上游样板的约500多个提交。
  • 额外增加了10或者在当地分公司,使承诺得到我的项目,从样板更新再次合作
  • 合并工作的本地分支到推动发展分支原产我的开发分支
  • 创建一个更致力于对当地发展分支(不推到原点)
  • 创造了大约一打的还没有被合并到其他开发当地分支机构(不推到原点)

我的Git修订历史现在已经有了我第一次提交项目之前的所有样板历史,我最初已经删除了它。它在我的提交中间也有数百个提交。

我想要做的是压缩合并中的所有内容,从上游到我用于单个提交的本地分支。有没有一种无痛的方式来做到这一点?

此外,我还需要重写原点的历史记录。这是一个私人回购,只有一些人正在使用它。我该怎么做呢?

+3

为什么人们这样做是为了自己? –

+1

@JoePhillips伟大的问题!就我而言,我计划在合并开发之前压缩我的本地分支。但其他人需要立即做出一些改变,我不知道如何做南瓜。所以我合并了它的方式,认为我可以在之后处理它。当然,其他的东西是优先考虑的,所以我现在正在努力清理我自己制作的这些烂摊子。 – Tauren

+0

我完全反对南瓜,所以我想我真的不认为这是一个混乱 –

回答

2

我想要做的是压缩合并中的所有内容,从上游到我用于单个提交的本地分支。有没有一种无痛的方式来做到这一点?

使用您的回购两个本地克隆:

  • 于一身,你检出要壁球(如您的上游合并提交SHA1)中的其他
  • 的各种状态,你做一个git的复位 - 硬到第一次提交这在当时还是正确的(即在历史上是好的)

然后,从第二个,你可以git --work-tree=/path/to/first/clone add .一切从第一,并提交。

重复第一个回购的各种状态,你想压缩成一个提交(通过添加第一个回购的工作树和提交在第二回购实现)。

然后git push --force

+0

谢谢,这个伎俩!其实,我只做了一次,没有重复。我没有重复,而是挑选了最近的提交。这确实丢失了一些数据,比如原始提交日期和他们所在的分支,但我并不太在意。 – Tauren