合并(git)起源到我当前的本地工作分支
我是git的新手,我想澄清一些我在使用git的过去几天所做的事情,但我不太确定这是否正确。合并(git)起源到我当前的本地工作分支
因此,我们有origin
(远程仓库)和master
(即库的本地分支)
这里是我开始工作:
-
git fetch origin
//会从origin
最新的代码(或remote
) -
git merge origin/master
//合并是最新的代码到本地master
- 然后创建新的分支关老爷
git checkout -b newbranch
- 现在我就
newbranch
工作2-3天,我意识到,我应该刷新我的newbranch
,因为别人可能已经增加了一些新的代码(我相信,术语叫做“反向整合”)
如何我最后一步做到了吗?
我相信如果我做git fetch origin/git merge origin/master
,那只会刷新(或反向整合)master
。
如果我这样做git fetch origin/git merge origin/newbranch
,这不会工作,我得到这样的“merge: origin/newbranch- not something we can merge
”的消息。
newbranch应该是当前分支,以确保您可以检出,那么你得到更新,从您的回购使用取然后合并newbranch与主
关于结帐:分支,与你目前的工作是已经结帐。要切换到另一个分支,您需要结账。如果您已经在分支机构工作,则不需要结账。
git checkout newbranch
git fetch
git merge origin/master
,而不是合并可以用底垫,在这种情况下,最后一行应更换
git rebase origin/master
合并和重订只更新您与其他分支的信息转移。合并获取主提交并将其添加到您的分支。 Rebase以一种不同的方式做了同样的事情。见Merging vs. Rebasing。现在只需要忘记rebase,只需要合并。
我认为你应该做的:
git stash
#store你在一个堆栈git pull --rebase origin/master
当地newbranch的变化#take在当地newbranch起源最新变化git stash pop
#pop存储在堆栈在步骤1中的变化如果发生冲突,您应该解决冲突,然后继续工作,直到您推送所有原始更改为止。
@Maciej Jureczko,感谢您的编辑,这是我第一次在stackoverflow中回答问题,我不知道如何编辑格式。 – Maggie
没关系,这就是评论者的所为:)确保你阅读了关于询问和回答的帮助部分:https://stackoverflow.com/help祝你好运! :) –
我会推荐顺序:
git fetch # get all new upstream commits
# bring master up to date
git checkout master
git merge # equivalent to `git merge origin/master`
# bring newbranch up to date
git checkout newbranch
git merge master
第一合并通常会导致快进,所以没有合并冲突存在。我会强烈建议不要盲目使用,使用rebase
任何解决方案:这将改写历史,并git
does not like lies.
由于git pull
是一样的git fetch ; git merge
,你也可以这样做:
# bring master up to date
git checkout master
git pull
# bring newbranch up to date
git checkout newbranch
git merge master
这正是为您节省一行打字。
,你会介意阐述请,我是新来的git。上面在我的例子中,我已经创建了newbranch,不确定为什么要调用git checkout或rebase? – pixel
@pixel,增加了一些文字 – Alexan
你介意解释一下这2行的内容吗? (结帐和重新分配)。谢谢 – pixel