2013-07-11 27 views
1

一些问题询问如何重写(rebase)一些提交以便它们出现在分支上,但是这些都似乎假设实际上必需的rebase,即提交通缉对于分支是穿插master通缉(无论是由“你”或其他人)。追溯性地将Git的行提交为分支

这个问题更简单:我在master分支上有一个存储库的克隆,并且我做了一堆意图创建GitHub拉取请求的提交。通常我会之前开始提交已运行

git checkout -b new-feature 

,但在这种情况下,我忘了。我是否可以追溯性地将此序列标记为在新分支上提交(无需使用git rebase)?

回答

2

您可以将提交到分支和reset你的主分支到它与:

git branch new-feature 
git reset --hard origin/master 

注意,这会吹走任何未提交的更改,如果这是你之前应该使用git stash问题开始拯救他们。

+0

听起来像是我自我回答的简单版本,省略了新分支的结帐。下次进入这种情况时会尝试一下。 –

+0

是的,这很简单,它的工作原理。也可能想要添加例如'git checkout new-feature && git push fork new-feature && git checkout master'。 –

1

假设fork是您的GitHub叉远程:

git checkout -b new-feature origin/master 
git reset --hard master 
git push fork new-feature 
git checkout master 
git reset --hard origin/master 

即:

  1. 创建新的分支,在上游末端生根。
  2. 强制它包含之前在master上提交的内容。
  3. 将分支推送到分叉存储库以准备提请请求。
  4. 回到master分支。
  5. 删除它的新提交。

也许不是最优雅的解决方案,但似乎工作。可能还想通过--set-upstreampush