Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何撤消VS中的暂存更改,而不覆盖更改集中的文件更改?_Git_Visual Studio_Team Explorer - Fatal编程技术网

Git 如何撤消VS中的暂存更改,而不覆盖更改集中的文件更改?

Git 如何撤消VS中的暂存更改,而不覆盖更改集中的文件更改?,git,visual-studio,team-explorer,Git,Visual Studio,Team Explorer,我有一个使用git的VisualStudio项目。在TeamExplore>Changes窗口中,我在“阶段性更改”区域中进行了一系列更改。问题是,这些旧的、分阶段的更改不再与“更改”区域中完成的工作兼容 在“阶段性更改”区域中,VisualStudio只给我一个取消阶段性更改的选项,它将阶段性更改合并到其他更改集中。然而,这不是我想做的 在提交之前,我如何丢弃所有阶段性更改,但保留所有更改?或者,如何仅提交“更改”集中的更改,而不提交暂存中的内容?如果我能做到这一点,我可以在提交后删除暂存中的

我有一个使用git的VisualStudio项目。在TeamExplore>Changes窗口中,我在“阶段性更改”区域中进行了一系列更改。问题是,这些旧的、分阶段的更改不再与“更改”区域中完成的工作兼容

在“阶段性更改”区域中,VisualStudio只给我一个取消阶段性更改的选项,它将阶段性更改合并到其他更改集中。然而,这不是我想做的


在提交之前,我如何丢弃所有阶段性更改,但保留所有更改?或者,如何仅提交“更改”集中的更改,而不提交暂存中的内容?如果我能做到这一点,我可以在提交后删除暂存中的内容。

我猜您在这里提到的是相同的分支提交。因此,您在本地提交了从未被推送到的本地更改。现在,
remote
在此分支上有一些更新,您希望在不丢失本地提交的情况下进行更新

示例:如果当前分支是
featureA
,您在本地有
阶段性更改
,并且
featureA
有您想要合并的更新,而不会丢失本地的代码更改

如果是这种情况,请在本地计算机的当前分支上创建另一个分支

git checkout-bfeatureb
因此,
featureB
包含您在
featureA
分支上本地所做的所有提交

现在
git签出功能

git重置——硬原点/featureA
注意:这将重置本地
featureA
以匹配
远程
。因此,它将删除此分支上的本地提交更改
featureA
,但是,
featureB
将保持不变

现在,将来您可以在本地任何时间签出到
featureB
,并在那里进行更改

如果您希望这些提交中的任何一个在将来使用到
featureA
中,请使用
cherry pick


git cherry pick
这将在您提到的提交散列上创建一个提交。如果您有
n
提交哈希以从
feartureB
实现。对
featureA
上的所有
n
提交执行此操作,我猜您在这里提到的是相同的分支提交。因此,您在本地提交了从未被推送到的本地更改。现在,
remote
在此分支上有一些更新,您希望在不丢失本地提交的情况下进行更新

示例:如果当前分支是
featureA
,您在本地有
阶段性更改
,并且
featureA
有您想要合并的更新,而不会丢失本地的代码更改

如果是这种情况,请在本地计算机的当前分支上创建另一个分支

git checkout-bfeatureb
因此,
featureB
包含您在
featureA
分支上本地所做的所有提交

现在
git签出功能

git重置——硬原点/featureA
注意:这将重置本地
featureA
以匹配
远程
。因此,它将删除此分支上的本地提交更改
featureA
,但是,
featureB
将保持不变

现在,将来您可以在本地任何时间签出到
featureB
,并在那里进行更改

如果您希望这些提交中的任何一个在将来使用到
featureA
中,请使用
cherry pick


git cherry pick
这将在您提到的提交散列上创建一个提交。如果您有
n
提交哈希以从
feartureB
实现。对所有
n
提交的
featureA

执行此操作解除对文件的暂存更改时,更改页面行为取决于该文件是否也仅对其进行了workdir更改

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

如果文件同时具有暂存和workdir更改,取消暂存该文件将放弃索引(暂存)版本,只保留文件的workdir版本


希望这能有所帮助。

解除对文件的暂存更改时的更改页面行为取决于该文件是否也仅对其进行了workdir更改

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

如果文件同时具有暂存和workdir更改,取消暂存该文件将放弃索引(暂存)版本,只保留文件的workdir版本

希望这有帮助