在私有git存储库

时间:2017-07-31 22:49:18

标签: git

我们有一个git存储库,它从公共存储库收集我们公司的所有私有分支,这些存储库来自GitHub上的项目。我们实现了我们不希望向上游推送的功能,这些分支通常基于公共存储库中的某些标记版本。

到目前为止一切顺利。当我想从公共存储库中提取后续版本时,我使用

git fetch

命令,然后我们可以使用这些更高版本来修改我们的代码或实现其他新分支。但是,如果有人不小心输入了命令:

git -p fetch

然后我们的存储库将清除所有未出现在远程/源中的分支。当然,没有任何私有东西在那里,所以我们可能会失去我们的工作中的所有或大部分工作,而这些工作并没有碰巧保存在我们的某个存储库克隆或文件系统备份中。

这似乎是一个非常脆弱的情况,我想要防范。我们是否以不应该使用的方式使用git工具?还是有更好的方法来实现这一点?

2 个答案:

答案 0 :(得分:1)

使用git fetch -p标志,你告诉git要修剪。我不知道该说什么,你实际上指导它去做一些具有破坏性的事情。当然,使用git,您始终可以使用git reflog向后走。只需使用哈希检查分支。

答案 1 :(得分:1)

git并不是备用替代品。但是,对于fetch,您是准确的,它不会使您免于存储故障。

无论如何,你可以做两件事:

  • 备份.git/refs.git/logs目录和.git/packed-refs文件。遗憾的是,删除分支时会删除Reflog,因此您不能依赖它们。
  • "precious objects" extension,按照此处的说明启用它。然后永远不会收集对象,如果从备份恢复分支,则可以确定它们是有效的。