更新已检出分支的-ref时如何自动更新工作树

时间:2015-02-21 11:57:01

标签: git

我检查了mk分支。现在我git fetch origin来获取origin/mk分支。这个分支是重新设置的,我没有本地更改,所以我只想将本地mk分支指针移动到获取的远程分支,所以我执行以下操作:

$ git update-ref -m "Updating mk to remote ..." refs/heads/mk refs/remotes/origin/mk

show-ref

证明了该操作似乎是成功的
$ git show-ref mk
a885dad11c37e5c03cc4937766d62e181984c1aa refs/heads/mk
a885dad11c37e5c03cc4937766d62e181984c1aa refs/remotes/origin/mk

但是,提交a885dad没有签出到工作目录。为什么?可以自动结账吗?

1 个答案:

答案 0 :(得分:1)

注意,正如“Merge, update, and pull Git branches without using checkouts”中所提到的,简单的git fetch -u origin mk:mk也会做同样的事情(快速合并)。

问题是:那些命令是否更新HEAD?

如果是git update-ref,则需要单独的git update-ref -m "Updating mk to remote ..." HEAD refs/heads/mk

但是使用git fetch中的-u也应该允许更新HEAD:

-u
--update-head-ok
  

默认情况下git fetch拒绝更新与当前分支对应的头部。此标志禁用检查   这纯粹是为git pull内部使用与git fetch进行通信,除非您实施自己的瓷器,否则您不应该使用它。

请注意,这些命令不会更新工作树 您仍然需要单独的git checkout -- .