首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我怎样才能把树枝的顶端剪下来放在别的地方呢?

我怎样才能把树枝的顶端剪下来放在别的地方呢?
EN

Stack Overflow用户
提问于 2018-12-06 04:00:06
回答 3查看 36关注 0票数 0

我在一个分支development上创建了一个新分支feature1。我编码了特性1,很高兴,并决定开始处理特性2,所以我创建了一个新的分支feature2并提交了一次。哦不!现在我的树看起来像这样:

代码语言:javascript
复制
dev <- . <- . <- feature1 <- feature2

feature1feature2都应该是dev的分支,如下所示:

代码语言:javascript
复制
dev <- . <- . <- feature1
 ^
  \--- feature2

怎样才能达到这样的效果呢?我整晚都在尝试各种形式的git rebase,但没有得到任何乐趣。

EN

回答 3

Stack Overflow用户

发布于 2018-12-06 04:13:34

假设分支的名称如下所示,rebase命令应如下所示:

代码语言:javascript
复制
git rebase feature1 feature2 --onto dev

git rebase的一种语法是:

代码语言:javascript
复制
git rebase <upstream> <branch> --onto <newbase>

如果指定了<branch>,则Git首先执行git checkout <branch>。然后,它计算<upstream>和当前签出的分支之间的基本提交。在我们的例子中,feature1本身就是基本提交,因为它是feature2的祖先。接下来,Git将获取当前签出的分支的所有提交,直到该基本提交,并将它们应用于<newbase>

票数 1
EN

Stack Overflow用户

发布于 2018-12-06 04:06:17

一种选择:

代码语言:javascript
复制
git checkout feature2
git rebase -i dev
# Delete all commits between 'dev' and feature2
票数 0
EN

Stack Overflow用户

发布于 2018-12-06 04:09:51

这可以通过首先创建新的分支来完成:

代码语言:javascript
复制
git checkout -b feature2 dev

然后是精挑细选:

代码语言:javascript
复制
git cherry-pick feature1

然后返回到旧的分支,并从那里删除提交:

代码语言:javascript
复制
git checkout feature1
git reset @^ --hard
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53639875

复制
相关文章

相似问题

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