git保持多长时间的分支外提交?

时间:2014-12-10 09:25:13

标签: git

假设我在基于feature1的名为master的本地存储库中创建了一个分支,并添加了一个或两个提交。然后我切换回master并确定feature1不会成功并删除分支。

我认为分支基本上是一个"指针"到特定的提交对象。

现在回答实际问题。

  1. 上述假设是否正确,或许在某种简化意义上?
  2. 文件系统上的提交对象还存在多长时间(以便我以后可以git checkout SHA1-HERE)?是否有某种"保留政策"这将删除不属于任何现有分支历史或标记的提交(不确定在这里使用正确的术语......)?
  3. 以上任何一种都依赖于git服务器的实现(gitosis,github等等)吗?
  4. 如果对象永远存在并且在一段时间/事件后没有自动清理,是否意味着将git' s receive.denyNonFastForwards设置为防止数据丢失的措施是没有意义的?
  5. 这个问题的原因:我目前正在开展一个receive.denyNonFastForwards强制实施的项目,因为它避免丢失任何承诺的工作(我怀疑receive.denyDeletes也是强制执行的)。我想确保没有更好的方法来保存已经完成但没有合并的工作,并且能够清理旧的分支以避免混乱。

1 个答案:

答案 0 :(得分:5)

默认为90天:

gc.reflogexpire
gc.<pattern>.reflogexpire
  

git reflog expire删除比此时更早的reflog条目;默认为90天。设置中间带有“<pattern>”(例如“refs/stash”),此设置仅适用于与<pattern>匹配的参考号。

所以:

  1. 90天
  2. 否(您实际上可以联系GitHub支持人员询问他们并恢复已删除的推送分支)
  3. “保留已提交但未合并”:您可以将其推送到专用的开发分支或专用的上游回购(仅适合您)