如何撤消VS中的分阶段更改,而不会覆盖“更改”集中的文件更改?

时间:2018-08-23 14:59:01

标签: git visual-studio team-explorer

我有一个使用git的Visual Studio项目。在“团队浏览”>“更改”窗口中,我在“分段更改”区域中进行了一系列更改。问题在于这些旧的,分阶段的更改不再与“更改”区域中完成的工作兼容。

在“暂存变更”区域中,Visual Studio仅向我提供了“取消暂存”的选项,该选项会将暂存变更合并到其他变更集中。但是,这不是我想要的。

在提交之前,我怎样才能排除所有分阶段的变更,但保留所有变更?另外,如何只提交“更改”集中的更改,而又不提交暂存中的内容?如果可以的话,我可以在提交后删除暂存中的内容。

2 个答案:

答案 0 :(得分:1)

在取消暂存对文件的暂存更改时,“更改”页面的行为取决于文件是否还具有仅工作目录的更改。

如果文件只有暂存的更改,则对其进行取消暂存将从索引中删除这些更改,但将文件内容保留在workdir版本中。然后,您可以选择相同的文件并撤消workdir更改,以返回到文件内容的最后提交版本。

如果文件具有暂存和工作目录更改,则取消暂存文件将丢弃索引(暂存)版本,而仅保留文件的工作目录版本。

希望这会有所帮助。

答案 1 :(得分:0)

我猜您在这里提到了相同的分支提交。因此,您具有从未提交到本地的本地更改。现在remote在此分支上有一些更新,您希望更新而不丢失本地提交。

示例:如果当前分支位于featureA,其中您在本地拥有staged changes,并且featureA <remote>具有要合并的更新,而又不丢失本地代码更改。

如果是这种情况,请在您本地的当前分支之上创建另一个分支。

git checkout -b featureB因此,featureB拥有您在featureA分支上本地进行的所有提交。

现在git checkout featureA

git reset --hard origin/featureA 注意::这会将您的本地featureA重置为与remote相匹配。因此,它将删除该分支featureA上的本地提交更改,但是featureB将保持不变。

现在,您以后可以随时在本地{@ {1}}进行结帐,并且在那里进行更改。

如果您希望将来再将这些提交中的任何一个用于featureB,请使用featureA

cherry-pick这将在git cherry-pick <commit-hash>上创建一个您提到过的提交哈希的提交。如果您有featureA个要从n实现的提交哈希。对feartureB

上的所有n个提交执行此操作