我有一个使用git的Visual Studio项目。在“团队浏览”>“更改”窗口中,我在“分段更改”区域中进行了一系列更改。问题在于这些旧的,分阶段的更改不再与“更改”区域中完成的工作兼容。
在“暂存变更”区域中,Visual Studio仅向我提供了“取消暂存”的选项,该选项会将暂存变更合并到其他变更集中。但是,这不是我想要的。
在提交之前,我怎样才能排除所有分阶段的变更,但保留所有变更?另外,如何只提交“更改”集中的更改,而又不提交暂存中的内容?如果可以的话,我可以在提交后删除暂存中的内容。
答案 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
个提交执行此操作