2011-06-13 80 views
1

在我的项目中,我为一个新功能创建了一个新分支,完成了该功能并将分支合并回了我的开发分支。然后我按照说明在本地和我的github源代码仓库中删除分支。如何查看或保护远程分支删除?

然后我注意到,我的分支的所有提及,包括本地和远程,都完全没有了。我看不到任何迹象表明该分支甚至在某个时间点存在。这很可怕,因为如果我带上另一个开发人员(或者如果我甚至这样做),而不是在GitHub上删除一个功能分支,他会删除开发分支。我将会看到的唯一迹象是一个没有出现原因的分支。

使用源代码控制的一个主要原因是要对源代码发生的所有事情有完整的历史记录,这似乎与其相反,除非我错过了某些东西。我更喜欢的是将分支标记为已关闭的某种方式,因此它不接受任何更改,但您仍然拥有分支进程的日志,关闭分支以及为什么关闭分支(该功能是否无效正确地出来,它必须重做,完成了,等等。)和谁关闭它。

因为我找不到任何方法来做到这一点,有什么办法可以至少确保谁可以删除分支,谁不能访问它?或者有没有办法查看删除的分支?

+0

类似于http://stackoverflow.com/questions/2471340/is-there-a-way-to-lock-a-branch-in-git。 – ssapkota 2011-06-13 15:34:56

+0

尝试创建分支,进行测试提交,删除分支,然后执行'git reflog'。很确定它会有特殊的哈希值。没有一个完整的答案,所以当然是一个很好的问题。 – Kzqai 2011-06-13 15:38:56

+0

不幸的是,gitolite(链接问题中的解决方案)似乎需要我提供我自己的服务器,我可以在其中托管和运行git存储库。由于我没有这方面的经验,并且无法与github的可靠性相匹配,所以直到我的操作变得更大以前,我才真正看不到它的实用性。 – KallDrexx 2011-06-13 15:39:19

回答

2

在git中删除分支确实会删除分支。如果这不是您想要的,请不要删除该分支。但是,删除分支本身不会删除任何项目历史记录;它只是删除对分支结束的引用。分支上的所有提交仍然存在;没有明显的方法可以找到它们。

您无法阻止有权访问您存储库的人删除分支。这就是为什么在github中每个人都有自己的仓库可以工作的原因。如果一个分支被删除,你就是那个人。

如果您错误地删除了一个分支,如果您知道分支的提示的提交ID(它将记录在您将其合并到主开发线的提交中,或者在reflog)。使用已删除分支的名称创建并签出新分支,然后使用git reset将分支名称与提示再次绑定。

从你的问题来看,你似乎想要永远跟踪分支的状态。正确的方法是在分支的末尾创建一个标签。然后,您可以删除分支,但提示(及其所有历史记录)的引用将位于标签中。

+0

重新创建分支的更好的指示发布在上面的注释中,git分支 antlersoft 2011-06-13 16:07:43

2

如果其他开发人员在Github上删除了一个分支,那么您仍然可以在您的本地仓库中拥有自己的副本,并且可以将其重新推送到Github。

+1

这不一定是真的,例如,如果我在两次之间更换了机器,或者我正在清理本地的东西。 – KallDrexx 2011-06-13 15:36:03

+0

好吧,如果你担心安全问题,但仍想使用Github并让其他人访问,那么这就是你的主要选择。 – Amber 2011-06-13 15:40:50

+1

(当然,您可以不给别人访问,并要求他们有自己的公开回购协议,以合并他们的工作。) – Amber 2011-06-13 15:41:18