如何解决将未提交的更改移动到新分支:git: stash vs checkout
我已对 branch1
中的代码进行了一些更改,但现在我需要将这些更改移至另一个分支。从图形上看,我有:
master
|___develop
|___branch1
并且我需要将所有未提交的更改和未跟踪的文件移动到新分支 branch2
(不存在):
master
|___develop
|___branch1
|___branch2
之后我将删除 branch1
,因为它的所有更改都已推送,并在 branch2
中留下所有未提交的更改和未跟踪的文件:
master
|___develop
|___branch2
SO 中有很多类似的问题,但我仍然不确定我应该如何处理我的情况。有人说使用 git stash
(How do I merge my local uncommitted changes into another Git branch?,moving changed files to another branch for check-in) 在我的情况下我猜是:
git stash -u
git checkout develop
git checkout -b branch2
git stash pop
但其他答案 (Put current changes in a new Git branch,Moving uncommitted changes to a new branch) 说只需将 checkout
用作:
git checkout -b branch2
但我不确定这是否也会携带我未跟踪的文件。有一个较新的答案建议使用 switch
(Move existing,uncommitted work to a new branch in Git),但我的 git
版本 2.17.1 没有此命令。
任何帮助将不胜感激。
解决方法
你可以简单地做
git checkout -b branch2
这将保留您的所有更改。毕竟,创建分支只不过是用名称 branch2
“标记”当前提交。
使用 stash
更安全,因为它避免了在切换带有脏工作目录的分支时可能出现的任何问题。 stash
甚至还有一个子命令,用于直接从 stash 创建一个分支。
git stash -u
git checkout develop
git stash branch branch2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。