如何在不覆盖更改集中的文件更改的情况下撤消 VS 中的暂存更改?
How can I undo Staged Changes in VS, without overwriting file changes in the Changes set?
我有一个使用 git 的 Visual Studio 项目。在 Team Explore>Changes window 中,我在 "Staged Changes" 区域进行了一系列更改。问题是这些旧的、分阶段的更改不再与 "Changes" 区域中完成的工作兼容。
在 "Staged Changes" 区域,Visual Studio 只给了我一个 Unstage 的选项,它将把暂存的变更合并到另一个变更集中。然而,这不是我想要做的。
如何在提交之前丢弃所有暂存更改但保留所有更改?或者,我如何才能只提交 "Changes" 集中的更改,而不提交暂存中的内容?如果可以的话,我可以在提交后删除暂存中的内容。
我猜你在这里提到了相同的分支提交。因此,您在本地提交了本地更改,这些更改从未被推送到 .现在 remote
在此分支上有一些更新,您希望在不丢失本地提交的情况下进行更新。
示例: 如果当前分支是 featureA
,您在本地有 staged changes
并且 featureA <remote>
有您想要合并的更新而不丢失您的代码在本地更改。
如果是这种情况,请在您本地的当前分支之上创建另一个分支。
git checkout -b featureB
因此,featureB
包含您在 featureA
分支上本地进行的所有提交。
现在git checkout featureA
git reset --hard origin/featureA
注意: 这将重置您的本地 featureA
以匹配 remote
。所以它删除了这个分支 featureA
上的本地提交更改,但是 featureB
将保持不变。
现在您以后可以随时在本地结帐到 featureB
并在那里进行更改。
如果您希望这些提交中的任何一个在将来用于 featureA
,请使用 cherry-pick
git cherry-pick <commit-hash>
这将在 featureA
上创建您提到的任何提交哈希的提交。如果您有 n
个要从 feartureB
实施的提交哈希。对 featureA
上的所有 n
提交执行此操作
取消暂存文件暂存更改时的“更改”页面行为取决于该文件是否也有仅工作目录更改。
如果文件只有暂存更改,取消暂存将从索引中删除这些更改,但保留文件的内容在 workdir 版本中。然后,您可以 select 同一个文件并撤消 workdir 更改以返回到文件内容的最后提交版本。
如果文件同时更改了 staged 和 workdir,取消暂存文件将丢弃索引(暂存)版本,只保留文件的 workdir 版本。
希望对您有所帮助。
我有一个使用 git 的 Visual Studio 项目。在 Team Explore>Changes window 中,我在 "Staged Changes" 区域进行了一系列更改。问题是这些旧的、分阶段的更改不再与 "Changes" 区域中完成的工作兼容。
在 "Staged Changes" 区域,Visual Studio 只给了我一个 Unstage 的选项,它将把暂存的变更合并到另一个变更集中。然而,这不是我想要做的。
如何在提交之前丢弃所有暂存更改但保留所有更改?或者,我如何才能只提交 "Changes" 集中的更改,而不提交暂存中的内容?如果可以的话,我可以在提交后删除暂存中的内容。
我猜你在这里提到了相同的分支提交。因此,您在本地提交了本地更改,这些更改从未被推送到 .现在 remote
在此分支上有一些更新,您希望在不丢失本地提交的情况下进行更新。
示例: 如果当前分支是 featureA
,您在本地有 staged changes
并且 featureA <remote>
有您想要合并的更新而不丢失您的代码在本地更改。
如果是这种情况,请在您本地的当前分支之上创建另一个分支。
git checkout -b featureB
因此,featureB
包含您在 featureA
分支上本地进行的所有提交。
现在git checkout featureA
git reset --hard origin/featureA
注意: 这将重置您的本地 featureA
以匹配 remote
。所以它删除了这个分支 featureA
上的本地提交更改,但是 featureB
将保持不变。
现在您以后可以随时在本地结帐到 featureB
并在那里进行更改。
如果您希望这些提交中的任何一个在将来用于 featureA
,请使用 cherry-pick
git cherry-pick <commit-hash>
这将在 featureA
上创建您提到的任何提交哈希的提交。如果您有 n
个要从 feartureB
实施的提交哈希。对 featureA
n
提交执行此操作
取消暂存文件暂存更改时的“更改”页面行为取决于该文件是否也有仅工作目录更改。
如果文件只有暂存更改,取消暂存将从索引中删除这些更改,但保留文件的内容在 workdir 版本中。然后,您可以 select 同一个文件并撤消 workdir 更改以返回到文件内容的最后提交版本。
如果文件同时更改了 staged 和 workdir,取消暂存文件将丢弃索引(暂存)版本,只保留文件的 workdir 版本。
希望对您有所帮助。