一位同事不小心提交了一个大型二进制文件,该文件在源代码控制中没有任何业务,因此导致存储库异常大。然后他将这个提交推送到公共服务器,从那时起,还有很多其他的提交和推送。我正在寻找一种方法来撤消该提交,或者只是从遥控器上删除二进制文件,以便存储库恢复其通常的大小。
我们常用的遥控器在 assembla.com,所以我没有直接的 shell 访问权限,只有 git。
假设这是可能的,对其他下游节点会有什么后果?每个人都需要克隆一个新的存储库吗?(如果是这样就好了)
一位同事不小心提交了一个大型二进制文件,该文件在源代码控制中没有任何业务,因此导致存储库异常大。然后他将这个提交推送到公共服务器,从那时起,还有很多其他的提交和推送。我正在寻找一种方法来撤消该提交,或者只是从遥控器上删除二进制文件,以便存储库恢复其通常的大小。
我们常用的遥控器在 assembla.com,所以我没有直接的 shell 访问权限,只有 git。
假设这是可能的,对其他下游节点会有什么后果?每个人都需要克隆一个新的存储库吗?(如果是这样就好了)
您可以重新设置分支以删除错误提交。然后,您必须使用强制推送将该重新设置的分支推送到 Assembla 的存储库。然后,所有开发人员要么必须进行新的克隆,要么获取远程分支,然后将本地分支硬重置到新的远程分支。
基本上命令将是(不一定完整):
要删除错误提交:
git rebase -i $(commit id before false commit)
git commit
git push -f origin master (assuming that the branch is master and the remote at assembla is called origin)
git rebase -i 将启动交互式 rebase 模式,您可以在其中删除提交。
要更新开发人员的克隆:
git fetch
git reset --hard origin/master
或者只是做一个新鲜的
git clone $(repositoryurl)
大胖子来了,但是:
当您这样做时,您绝对应该在进行更改之前通知所有开发人员提交并推送他们的工作。然后从旧存储库中进行备份,以便在出现任何问题时恢复它