我为什么要git checkout --detach

时间:2016-11-20 20:30:49

标签: git

当我运行$ git checkout --detach时,我理解幕后发生的事情。

master上,当我$ git checkout --detach时,我的.git/HEAD并未指向ref: refs/heads/master,而是指向哈希(与refs/heads/master相同)。

当我真的想要这样做的时候会是什么用例?

2 个答案:

答案 0 :(得分:5)

根据commit that introduced the flag

  

例如,在进行临时合并时可能会使用此方法   测试两个主题一起工作。

我想这个想法是故意分离允许你进行进一步的提交,你知道一旦完成就会被丢弃(并且一旦GC运行)。

请注意,此标志实际上并未添加任何新功能;您可以使用git checkout some-branch^0获得相同的结果。

答案 1 :(得分:2)

以下是我个人如何使用 git checkout --detach 的真实示例。


我正在开发一个名为 midimap 的程序,我也有一个稳定的长期在后台运行的进程。

为此,我使用两个 worktrees~/vc/github.com/fossegrim/midimap,在此称为 DEV,用于开发,而 ~/vc/github.com/fossegrim/midimap-stable,在此称为 STABLE,用于长期进程。

当我启动计算机时,我在 STABLE 中运行 midimap 程序并在 DEV 中打开 GNU Emacs。当我在 DEV 中处理我的项目时,我最终会想更新 USAGE 工作树以包含 DEV 的更改。

因为签出已经在另一个工作树中签出的分支是非法的。我必须用另一种方式检查它:git checkout --detach master