我有一个使用git的Visual项目。在Team Explore>Changes窗口中,我在“分阶段更改”区域中进行了一系列更改。问题是,这些旧的、分阶段的变化不再与在“变化”领域所做的工作兼容。
在“分阶段更改”区域中,Visual只允许我选择退出,这将将阶段性更改合并到其他更改集中。然而,这不是我想做的。
在提交之前,我如何丢弃所有已分阶段的更改而保留所有更改?或者,我如何才能只提交“更改”集中的更改,而不执行阶段中的更改呢?如果我能做到这一点,我就可以删除提交后的暂存内容。
发布于 2018-08-23 16:45:40
取消对文件的分阶段更改时,更改页行为取决于该文件是否也有仅对其进行的工作更改。
如果文件只进行了更改,则取消暂存将从索引中删除这些更改,但将该文件与workdir版本中的内容放在一起。然后,您可以选择相同的文件并撤消workdir更改,以返回到文件内容的最后提交版本。
如果一个文件同时进行了更改和workdir更改,那么取消暂存该文件将放弃索引(分阶段)版本,而只保留该文件的workdir版本。
希望这能有所帮助。
发布于 2018-08-23 15:38:05
我想你在这里提到的是同一个分支提交的。因此,您在本地提交了从未被推送到的本地更改。现在,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上创建一个commit,您曾经提到过这个提交-散列。如果您有要从n实现的feartureB提交散列。对在n上提交的所有featureA执行此操作
https://stackoverflow.com/questions/51988765
复制相似问题