【问题标题】:How does `receive.denyCurrentBranch=updateInstead` interact with the Index?`receive.denyCurrentBranch=updateInstead` 如何与索引交互?
【发布时间】:2016-04-14 07:12:20
【问题描述】:

receive.denyCurrentBranchconfig option 控制如果你推送到一个 repo 的结帐分支会发生什么。

默认情况下,它会拒绝它(这就是为什么您通常只推送到没有结帐分支的裸仓库)。

可以通过ignorewarn禁用。

另一个选项是updateInstead

这样做的作用是,如果HEAD和工作目录相同,并且被推送的分支是HEAD,那么工作目录和分支/HEAD都会同时更新。

如果工作目录与HEAD不同,则推送被拒绝。
这对于推送到网络服务器很有用,for example

我的问题是,这个选项是否与Index 交互?

索引更新了吗?如果HEAD 和工作目录匹配,但Index 不匹配怎么办?

【问题讨论】:

    标签: git git-push git-config git-index


    【解决方案1】:

    索引更新了吗?如果 HEAD 和工作目录匹配,但索引不匹配怎么办?

    Commit 0855331 (git 2.4.0-rc0, Dec. 2014) 明确表示:

    receive.denyCurrentBranch 设置为 updateInstead 时,推送 尝试更新当前签出的分支被接受 只有当索引和工作树完全匹配时 当前签出的提交,在这种情况下索引和 更新工作树以匹配推送的提交
    否则拒绝推送。

    虽然同样的提交引入了push-to-checkout 钩子。

    此钩子可用于自定义此“推送部署”逻辑。
    钩子接收到将要更新当前分支的尖端的提交,并且 可以决定可以接受什么样的本地更改以及如何更新索引和工作树以匹配当前分支的更新尖端分支

    这为索引提供了一些灵活性。


    Commit 1a51b52, git 2.4.0-rc2, Apr 2015再说一遍:

    receive.denycurrentbranch 设置为updateinstead 并推入 当前分支,当工作树和索引是真实的 clean, 应该重置工作树和索引以匹配 推送提交的树

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      相关资源
      最近更新 更多