如何将本地更改从 master 提交到另一个分支

41 *_* 6c 0 git gitlab

我是使用 Git 的新手,一些事情或命令对我来说很清楚。我现在的问题在这里描述:

昨天我得到了最新版本的master. 我做了一些本地更改,最终超出预期。现在我想将此本地状态提交给另一个branch(名为"image_acquisition")。

所以我的问题总结如下:

  1. 我是“大师背后的 2 次提交”。我必须考虑什么才能不破坏任何东西?这一步有必要吗?

  2. 更重要的是:命令应该如何才能使分支上的所有内容都清理干净?

如果我做错了什么,我只是害怕丢失所有更改。

Tim*_*sen 5

如果你还没有提交你的本地工作,那么我建议做一个git stash隐藏你当前工作目录和阶段的工作。然后,从中创建一个新分支master并应用您的存储。尝试这个:

# from master
git stash
git checkout -b your_feature
git stash apply
git commit -m 'completed a feature'
Run Code Online (Sandbox Code Playgroud)

这会让你在一个新的分支上your_feature,一个包含你所有工作的提交。从这一点开始,您将做什么取决于您的工作流程。典型的下一步是将您的分支推送到远程,并创建一个拉取请求:

git push origin your_feature
# then create pull request on GitHub, Bitbucket, etc.
Run Code Online (Sandbox Code Playgroud)

如果您已经已经取得的一个或更多的提交,那么情况就有点复杂。在这种情况下,您可能只提交本地工作,然后创建一个新分支:

# from master
git commit -m 'completed a feature'
git branch your_feature
Run Code Online (Sandbox Code Playgroud)

然后,您可以回滚master到提交之前。例如,如果您已经进行了三个提交,包括上面的一个,那么您可以尝试:

git reset --hard HEAD~3
Run Code Online (Sandbox Code Playgroud)

现在,你有一个包含三个提交的真正的功能分支,master应该在远程之后,而不应该在远程之前。