我手头有一个有趣的问题。在共享团队仓库中,团队成员将一个遥控器添加到一个完全不相关的存储库(这是一个意外)。
e.g。
git remote add foreign-remote https://github.com/some-open-source-project
他检查了那个仓库的主分支并将其推送到我们的仓库。
e.g。
git checkout foreign-remote/master
git checkout -b experiment
git push origin experiment
这有效地在团队回购中创建了两个不相关的子图:
左边部分是我们正确的代码,正确的部分是外部存储库。
我们如何完全删除正确的部分?它不会造成任何伤害,但它非常烦人,我想摆脱这个子图,最好不要留下任何痕迹。
另外,有没有办法防止这种情况发生?
答案 0 :(得分:10)
从遥控器中删除指向错误图形的分支。在您的情况下,它是<extension module="org.jboss.as.cmp"/>
。
experiment
如果其他开发者已经获得该分支,则必须执行
git push origin :experiment
更详细
git fetch --prune
现在,如果您从 A F
/|\ |
B C D G
\|/ |
E <-- origin/master H <--- origin/experiment
删除experiment
分支,则不会再引用提交origin
。因此,提交H
将在F-G-H
上删除。
从遥控器中取出后。已经提取它的开发人员必须执行git gc
以删除不再存在的遥控器。
如果您想要感觉更安全,请制作备份克隆
另外,有没有办法防止这种情况发生?
使用gerrit代码审查。它允许您定义细粒度的访问权限,并且您可以在审核时拒绝更改集。因此,错误的提交将被丢弃,而不会集成到您的存储库中。