如何解决切换分支并只进行特定更改
我对 Git 的思维方式还很陌生,我几乎完全通过 VSCode GUI 和 Github 桌面应用程序使用它,所以如果我的想法或术语是倒退或横向,请耐心等待。
我经常发现自己在做一些工作,然后意识到我刚刚完成的一些工作应该在与我所在的不同的分支中完成,并且需要将这些更改移动到另一个分支。但这仅适用于当前分支中的一些更改 - 分支中的其余更改确实属于它们应该保留的位置。通常我只想移动一小部分文件,而可能有 40 或 50 个文件应该留在原处。
有很多关于如何更改分支并将所有未提交的更改移动到另一个分支的问题和教程;我还可以找到有关如何从现有提交中挑选的问题(例如 this one – 但我可能会在 Google 上找到有关如何仅移动特定的、选定的、未提交的更改的任何描述 em> 到不同的分支。也就是说,
- 更改在当前分支中未提交(我不想在那里提交它们,因为它们不属于该分支)
- 要移动的更改只是当前分支中更改总数的子集
- 移动后,更改应该从当前分支消失并添加到另一个分支中的现有更改,以便我可以在该分支中提交它们立>
我可以手动挑选文件(逐个文件),或者我可以暂存或取消暂存我想要移动或不移动的特定更改;无论哪种方式对我来说都可以(或者如果有另一种方式也可以)。
理论上,我想我应该能够在当前分支中存储更改排除我想要移动的文件,然后切换到另一个分支。我找到了对 how to stash specific files 的描述,但不是相反的方法,将所有内容除了特定文件。
是否有一些相对简单的方法来实现这一点?
解决方法
当然,和往常一样,我在这里发帖后立即想到了一个解决方案......很可能不是最好或最简单的方法,但它确实有效。
它可以通过几个相对简单的步骤完成,结合 staging 和 stashing:
- 暂存您想要转移到另一个分支的更改
- 使用
git stash -ku
(k
用于保持索引,limits it to unstaged changes,u
用于包含未跟踪的文件)存储未暂存的更改 - 切换到您想要的分支并在那里提交更改
- 切换回您所在的分支,然后使用
git stash apply
git stash pop
申请/弹出您的藏匿处
由于我不太明白的原因,当我应用我的 stash 时,暂存的更改也会重新出现,但由于它们现在已在另一个分支中提交,我可以在当前分支中取消暂存并丢弃它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。