我手边有一个有趣的问题.在共享团队仓库中,团队成员将一个遥控器添加到一个完全不相关的存储库(这是一个意外).
例如
git remote add foreign-remote https://github.com/some-open-source-project
Run Code Online (Sandbox Code Playgroud)
他检查了那个仓库的主分支并将其推送到我们的仓库.
例如
git checkout foreign-remote/master
git checkout -b experiment
git push origin experiment
Run Code Online (Sandbox Code Playgroud)
这有效地在团队回购中创建了两个不相关的子图:

左边部分是我们正确的代码,正确的部分是外部存储库.
我们怎样才能完全删除那个正确的部分?它没有造成任何伤害,但它非常烦人,我想摆脱这个子图,最好不留下任何痕迹.
还有,有办法防止这种情况发生吗?
Ren*_*ink 10
从远程控制器中删除指向错误图形的分支.在你的情况下它是experiment.
git push origin :experiment
Run Code Online (Sandbox Code Playgroud)
如果其他开发人员已经获得该分支,他们必须做一个
git fetch --prune
Run Code Online (Sandbox Code Playgroud)
更详细
A F
/|\ |
B C D G
\|/ |
E <-- origin/master H <--- origin/experiment
Run Code Online (Sandbox Code Playgroud)
现在,如果experiment从中删除分支,origin那么H将不再引用提交.因此,提交F-G-H将被删除git gc.
从遥控器中删除后.已经提取它的开发人员必须执行a git fetch --prune删除不再存在的遥控器.
如果您想要更安全,请制作备份克隆
还有,有办法防止这种情况发生吗?
使用gerrit代码审查.它允许您定义细粒度的访问权限,并且您可以在审核时拒绝更改集.因此,错误的提交将被丢弃,而不会集成到您的存储库中.