首页 > 解决方案 > 我不小心在 master 上工作,如何将我对分支重置 master 所做的所有更改转移到最后一次提交?

问题描述

我还没有提交我的更改,因为我意识到我正在处理 master 就像我即将提交一样。我想将所有未提交的更改移动到一个新分支上,然后将 master 重置为最后一次提交。我确信一定有办法做到这一点,但我不熟悉 git(每次我使用它时,我都会担心我会搞砸一些东西并毁掉应用程序)。如果有帮助,我会使用 sourcetree。

标签: gitatlassian-sourcetree

解决方案


如果您的更改尚未暂存或提交,并且您的本地master分支已经是最新的,您可以简单地创建一个新分支。

git checkout -b newbranch

如果您需要先与上游 master 同步,您的提交可能会与上游更改发生冲突。首先,简单地尝试

git pull origin master

(或者upstream不是origin你正在使用的那个)。如果您没有收到任何警告,那么您master现在是最新的。如果您确实收到警告,git将拒绝拉取,并且您需要做出安排以协调原始/上游与您未提交的更改之间的差异。第一步,存储您的更改,然后继续;

git stash save -m "put a useful comment so you know what this is"
git pull origin master
git checkout -b newbranch
git stash pop

在您继续并提交之前,此时可能会有一些冲突需要解决。

虽然通常只创建一个新的本地分支并提交您拥有的内容会感觉更安全,然后切换回master并查看需要做什么来解决与上游的任何冲突。


推荐阅读