首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将开发更改移动到新的功能分支

将开发更改移动到新的功能分支
EN

Stack Overflow用户
提问于 2015-05-14 12:12:43
回答 4查看 2.9K关注 0票数 5

在我的项目中,我使用git-flow。我让masterdevelop分支与remote-repo同步,通常对于所有更改,我创建一个feature分支,编辑文件,在feature分支上提交更改,并在develop中使用合并关闭分支。

但有时我忘记创建一个feature分支,直接在develop中编辑文件。我怎样才能在一个新的feature分支中移动恒流?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-14 12:29:24

如果您已经提交了develop,并且您的历史记录如下所示:

代码语言:javascript
复制
A---B---C---D develop

在这里,Cdevelop上的最后一个正确提交,D应该被提交到一个特性分支。执行以下操作(在develop上):

代码语言:javascript
复制
git branch feature      # creates feature branch pointing at D
git reset --hard C      # or HEAD^, HEAD~1, etc - resets develop back to C

这将导致:

代码语言:javascript
复制
A---B---C develop
         \
          D feature

如果您已经完成了多个提交,这也会很好,因为您可以替换需要在第二个命令中将develop重置回的任何提交引用。

值得注意的是,reset --hard将放弃任何未提交的更改。我总是建议只使用干净的工作树来操作提交历史,但是为了避免这种情况,您可以使用像不同复位方式这样的--merge,只要未提交的更改不对C...D中的任何文件进行更改,就可以重新设置。

票数 11
EN

Stack Overflow用户

发布于 2015-05-14 12:27:06

可以使用git存储将更改放到一个新分支,请参阅吉特书

因此,在master中,在您进行更改(但没有添加或提交它们)之后,您可以这样做:

代码语言:javascript
复制
git stash //stashes the changes
git stash branch featurebranchname //creates a new branch and applies the stash to it
票数 3
EN

Stack Overflow用户

发布于 2015-05-14 12:23:33

假设您已经在本地提交了这些更改并且尚未按下,则可以使用软重置:

代码语言:javascript
复制
git reset --soft HEAD~1
git checkout feature
git commit

只需将git reset --soft HEAD~1中的1替换为要软重置的提交数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30237123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档