结帐提交,保持工作目录的更改

时间:2018-02-15 08:35:13

标签: git working-directory

我的工作目录很脏,这就是我的喜好。

我想查看某个提交,但git抱怨:

error: Your local changes to the following files would be overwritten by checkout:

足够公平。我怎么知道git

  

请不要覆盖它们。保持更改的文件不变,并且   从选定的提交中签出其余部分。

1 个答案:

答案 0 :(得分:1)

  

我的工作目录很脏,这就是我喜欢它的方式。

那好吧! : - )

  

我怎么能告诉git:请不要覆盖它们。保持更改的文件不变,并从选定的提交中查看其余文件。

你不能 - 至少,不能直接。

为什么你想要做到这一点并不清楚,这可能会影响 你应该如何做到这一点。

请注意,可以做的一件事就是提取任何特定的提交到新的工作树(如果你的Git足够新:2.5是最小值,2.6 +更好)使用{{1 }}。如果您的Git较旧,您可以简单地将您的存储库克隆到新的克隆,并使用它将提交提取到新克隆的工作树中。

您还可以使用git worktree add将任何特定提交打包为tar或zip存档。一旦你拥有了这个档案,你可以随心所欲地做任何事情。

这两种替代方案都有以任何方式改变现有工作树的git archive和索引的副作用,当然,不会改变您的任何工作 - 树文件。 (或者,最好说HEAD具有更改git checkout和索引的副作用,除了那些不是效果;这些是主要效果,因为HEAD表示当前提交,索引为工作树编制索引,HEAD的目的是切换提交,更新工作树。 / p>

最后一个选择是继续进行提交,这当然违反了设置的“我喜欢它”的一部分。但是您可以在临时分支上进行此提交,或者甚至根本不在任何分支上进行 - 后者是git checkout所做的,尽管它实际上会根据您提供的参数进行两次或三次提交。提交后,您可以使用所有基于提交的工具来处理该提交,例如采摘樱桃。