在进行本地更改后替换远程Git上先前提交的作者和提交者的特例

时间:2012-09-07 07:18:28

标签: git

亲爱的stackoverflow会员,

我已经阅读了一段时间寻找这个问题的答案,并且无法在其上找到任何内容,所以我想我会要求一些意见。

以下是该方案:

我一直在为另一家为第三方做网页设计的承包商做分包工作。在他给我这份工作之后,为了让事情分开(因此他可以仔细检查我的工作),他创建了克隆原始git到私人服务器上的远程git。然后,(显然)我将这个git克隆到我的本地计算机上。

我以自己的名义提交了几次(~5次)提交,并将它们推送到私人服务器的远程git。接下来,承认所有提交都应该以他自己的名义,承包商运行某种程序或命令来更改我所做的所有提交,而不是将自己的名称显示为作者/提交者,然后将这些提交推送到原始提交远程第三方git。 [作为旁注,我并不完全确定他的运行方式,但我假设它是在这里的许多线程中讨论的破坏历史的filter-branch命令的脚本版本{最好的一个:Change the author and committer name and e-mail of multiple commits in Git }(其中一个版本也在git帮助页面上)。]

此时,承包商通知我他已经这样做并告诉我不要提交或推送到我们的私人服务器的远程git,直到我将本地git中的设置更改为他的user.name和user.email。不幸的是,当我被告知时,我已经在我的本地存储库上完成了很多工作。

所以这是我的问题:从我读过的所有内容来看,我认为唯一的就是继续我的工作将是删除我的本地存储库并重新克隆现在在我们的私有服务器上的版本(以避免与先前的提交SHA-1s)。换句话说,目前,我不认为我提交,然后将我的更改推送/合并到私有服务器的远程git的版本,因为它已经改变。

所以,如果我删除了我的本地git,我会失去大量的工作,但是我可以在私有服务器上与'new'版本'重新同步'...但是,这显然是不可接受的,因为我当然不想做另外20个小时的工作只是为了回到原来的位置。无论如何都要下载新版本但仍保留我的更改?

注意:除了更改作者/提交者之外,他没有对任何文件进行任何更改。 另请注意:我所做的所有遗失的工作还没有被提交给我当地的git。

有什么想法吗? ......我真的可以使用帮助。

非常感谢, 最好的祝福, 汤姆

1 个答案:

答案 0 :(得分:0)

只需使用git pull --rebase 重播来自服务器的修改历史记录顶部的本地更改。