Git 如何撤消VS中的暂存更改,而不覆盖更改集中的文件更改?
我有一个使用git的VisualStudio项目。在TeamExplore>Changes窗口中,我在“阶段性更改”区域中进行了一系列更改。问题是,这些旧的、分阶段的更改不再与“更改”区域中完成的工作兼容 在“阶段性更改”区域中,VisualStudio只给我一个取消阶段性更改的选项,它将阶段性更改合并到其他更改集中。然而,这不是我想做的Git 如何撤消VS中的暂存更改,而不覆盖更改集中的文件更改?,git,visual-studio,team-explorer,Git,Visual Studio,Team Explorer,我有一个使用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版本 希望这有帮助