git是否将无法访问的对象推送到远程

时间:2018-12-19 09:10:37

标签: git

如果我使用git commit --amend,则先前的提交(例如,提交A)将被覆盖,因为git reflog记住了它,因此无法完全实现。

我的问题是:

  1. 如果现在我执行git push,提交A是否会推送到远程?
  2. 如果是,那么完全不可访问的对象(例如,在git reflog expire --expire-unreachable=now之后使reflog忘记提交A)如何处理
  3. 如果没有,如何使其也被推动

1 个答案:

答案 0 :(得分:1)

已从评论中移出

  1. 没有“无法完全到达”的状态。它是可到达的,还是不可到达的(从推送的refspec中)。可到达的提交被推送。不可达的不要。 (如果使用普通git push,则可能使用默认配置选项push.default=upstream,该选项会推送当前分支;例如,如果您位于master上,git push会推送{ {1}},以及从master可以到达的所有对象。)一个相关的术语是“悬空对象”-从 any 其他对象无法到达的对象。

  2. master删除无法访问的对象。在那之后,这些引用不是不可到达的,它们不存在。

  3. 使它们可访问(例如,通过git reflog expirebranch命令)。或者,在tag中使用refspec参数来显式选择对象。 (根据定义,每个对象都可以从自身到达。)