使用上次推送的更改启动新的git分支

时间:2015-03-26 14:31:27

标签: git github

我有两个git branches master和first_puppet。我把第一个木偶推到了github然后创建了一个拉取请求。我现在已经开始研究一个新功能,但错误地在first_puppet分支中工作。自从我将first_puppet推送到新分支后,我想移动所有更改。我怎么能这样做?基本上我的困惑中心不应该总是从主人那里分支出来。如果我不从主人那里分支会有任何问题。非常感谢你的帮助。 - 汤姆

1 个答案:

答案 0 :(得分:1)

假设您在first_puppet分支和origin指向您推送到的遥控器:

git branch new_branch
git reset --hard origin/first_puppet
git checkout new_branch

这将从当前HEAD创建一个新分支,然后将当前分支重置为与上游推送相同的ref,然后切换到新分支。

新分支仍然包含first_puppet分支中的所有内容,以及您的新更改(这不一定是问题!它取决于您希望如何使用分支,请参阅下文)。如果您只希望它包含新的更改,您可以创建另一个分支,分支主要,并挑选新的更改:

[after running the first steps above]
git checkout -b new2 master
git cherry-pick first_puppet..new_branch

您可以将新分支重新绑定到主分区并删除不需要的提交:

[after running the first steps above]
git branch --set-upstream-to=master
git rebase -i
[edit the list of commits to only include the new ones]
  

基本上我的混乱中心不应该总是从主人那里分支出来。

不一定。如果您想要进行另一组基于first_puppet分支中的更改的更改,那么分支该更改是有意义的。

如果您想进行一些可能形成单独拉取请求的独立更改,从master开始可能更有意义。

  

如果我不从主人那里分支会有任何问题。

这取决于你认为的问题!

您将拥有一个包含两组更改的分支。这可能是好的,或者可能是一个问题。从根本上说,没有理由你必须始终从master分支,但它可能对你作为约定或特定的工作流程有意义。