如标题。我创建了一个分支来执行特定任务
add-ui-components
。不幸的是,我还发现了一些具体的更改,让我们称之为upgrade-webpack-config
,我想将其移出当前分支。我刚刚命名的后一个分支是一个假分支,因为我既没有为其创建分支也没有提交这些更改。鉴于我位于分支add-ui-components
,我是否可以将那些未暂存的文件更改移回main
,以便在完成当前分支add-ui-components
后我可以为其创建另一个分支?谢谢
让我用一些图表来更好地理解
输入
main: A-B-C
feat: A-B-C-D-E + (not related unstaged changes)
预期输出:
main: A-B-C + (not related unstaged changes)
feat: A-B-C-D-E + (new related changes added here)
feat
分支:隐藏您的更改:git stash --include-untracked
git checkout main
git stash pop
git commit -m "not related unstaged changes"
git checkout feat
作为最后一步,您必须将
main
中的“最近更改”合并到 feat
- 使用 merge 或 rebase。
例如,对于 rebase:
git rebase master
-> 这会有点还原你的所有提交并一一应用它们,就好像你在“不相关的取消阶段更改”提交应用于 feat
之后进行了分支
main
只需执行
git switch main
,未暂存的更改就会浮出水面。
当然,除非更改的文件在 main/C 和 feat/E 之间不同,但 git 会告诉你。
在这种情况下,您将执行
git stash
,然后 git switch main
,然后 git stash pop
。
如果后者带来冲突,您可以解决它们,在验证一切正常后可以
git stash drop
存储条目,因为如果存在冲突,git stash pop
的行为类似于 git stash apply
,将更改保留在存储中,以防您将它们应用到错误的地方或需要重新开始。