Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用上次推送的更改启动一个新的git分支_Git_Github - Fatal编程技术网

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

使用上次推送的更改启动一个新的git分支,git,github,Git,Github,我有两个git分支master和first_puppet。我将第一个puppet推送到github,然后创建了一个pull请求。我现在已经开始开发一个新功能,但是错误地在first_puppet分支工作。自从我将第一个_puppet推到一个新分支后,我想将所有更改移动到一个新分支。我该怎么做?基本上,我的困惑集中在我不应该总是从主分支。如果我不从大师那里分支,会有任何问题。非常感谢你的帮助。 -Tom假设您在第一个\u puppet分支上,并且原点指向您按下的遥控器: git branch ne

我有两个git分支master和first_puppet。我将第一个puppet推送到github,然后创建了一个pull请求。我现在已经开始开发一个新功能,但是错误地在first_puppet分支工作。自从我将第一个_puppet推到一个新分支后,我想将所有更改移动到一个新分支。我该怎么做?基本上,我的困惑集中在我不应该总是从主分支。如果我不从大师那里分支,会有任何问题。非常感谢你的帮助。
-Tom

假设您在
第一个\u puppet
分支上,并且
原点
指向您按下的遥控器:

git branch new_branch
git reset --hard origin/first_puppet
git checkout new_branch
这将从当前磁头创建一个新的分支,然后将当前分支重置回您向上游推送的相同参考,然后切换到新分支

新分支仍然包含
first\u 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\u puppet
分支中的更改进行另一组更改,那么分支是有意义的

如果您想进行一些独立的更改,这些更改可能会形成一个单独的请求,那么从master开始可能更有意义

如果我不从大师那里分支,会有任何问题

这取决于你考虑的问题! 您将拥有一个包含两组更改的分支。这可能是好事,也可能是个问题。从根本上说,您并没有理由总是从master分支,但作为一种惯例或特定的工作流,它可能对您有意义