git - 在 git 中交换分阶段和非分阶段更改的最短方法是什么?

标签 git

如果有一些变化被添加到索引中,有一些变化没有被添加到索引中,我该如何交换这两组变化?

最佳答案

它认为这对于临时提交来说是最简单的。当您有暂存和未暂存提交时,您在尝试对更改重新排序时可能会发生冲突。

对分阶段的更改进行提交,创建一个分支供以后使用:

git commit -m "Saved staged"
git branch save-staged

使用未暂存的更改进行提交(如果未暂存的更改包含新文件,您可能需要先明确地 git add 它们):

git commit -a -m "Unstaged changes"

将未暂存的更改重新定位到原始 HEAD 上(可能涉及冲突解决):

git rebase --onto HEAD^^ HEAD^

将暂存变更重新定位到未暂存变更(可能涉及冲突解决):

git reset --hard save-staged
git rebase --onto HEAD@{1} HEAD^

最后,将索引重置为(最初)未暂存的更改:

git reset HEAD^

并将分支指针移回原来的HEAD:

git reset --soft HEAD^

删除了临时分支:

git branch -D save-staged

关于git - 在 git 中交换分阶段和非分阶段更改的最短方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573410/

相关文章:

git - 如何将一个大的 Git 分支拆分成许多较小的分支?

git - 如何在我的 ionic 应用程序中显示 git sha

Git 逆向错误

java - 在版本控制下的 Eclipse 项目中创建一个新的根目录

Git 卡在增量对象上

java - 多个项目共享同一个数据库(Spring JAVA)

git - 如何将 git 存储库添加为另一个 git 存储库的共享依赖项?

c# - 如何在 VS Code 中禁用 pop GitHub

git - 使用 Git 和 Visual Studio 2015 pull 、编辑和推送文件

git - 使用 LFS 初始化裸 git 仓库