根据git中的工作目录分离工作树

时间:2018-01-19 17:26:54

标签: git

我有一个项目需要几分钟才能编译。通常我会这样做:

$ git worktree add --detach ../my-project-build HEAD

然后我在my-project-build有另一个终端窗口进行编译。当我完成后,我删除了目录。

如何从我的工作目录创建工作树(包括未提交的更改和未跟踪的文件)?

1 个答案:

答案 0 :(得分:2)

简短的回答是你无法做到。 git worktree add命令使用git checkout填充新工作树,而git checkout只能读取提交。 1

您可以做的是对当前工作树进行归档(tarrar或其他) - 可能不包括.git目录或文件 - 并提取该归档在其他地方,甚至可能在一个附加的工作树上(如果你愿意,可以分开)。只要您的归档程序保留时间戳和文件,您就可以得到您想要的内容。有几个归档工具只能从一个树复制到另一个树,例如rsync。

1 从技术意义上说,可以通过索引读取特定的git add个ed文件,但实际上这太难了,并且它根本不包括未跟踪的文件。