2

一堆问题询问如何重写(rebase)一些提交,以便它们出现在分支上,但这些似乎都假设 rebase 实际上是必要的,即分支想要的提交穿插着想要的提交master(无论是由“你”或其他人)。

这个问题更简单:我在分支上有一个存储库的克隆master,我做了一堆提交,打算创建一个 GitHub 拉取请求。通常我会跑

git checkout -b new-feature

开始提交之前,但在这种情况下我忘记了。我可以将此序列追溯标记为在新分支上的提交(无需使用git rebase)吗?

4

2 回答 2

3

您可以将提交移动到一个分支并将您的主分支重置为它所在的位置:

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

请注意,这将清除任何未提交的更改,如果这是您应该git stash在开始保存它们之前使用的问题。

于 2013-07-11T14:44:56.670 回答
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

IE:

  1. 创建根植于上游尖端的新分支。
  2. 强制它包含以前提交的内容master
  3. 将分支推送到分叉的存储库以准备拉取请求。
  4. 回到master分支。
  5. 从中删除新的提交。

也许不是最优雅的解决方案,但似乎有效。可能还想--set-upstream传给push.

于 2013-07-11T13:56:13.280 回答