2017-09-13 92 views
1

我是git的新手,我想澄清一些我在使用git的过去几天所做的事情,但我不太确定这是否正确。合并(git)起源到我当前的本地工作分支

因此,我们有origin(远程仓库)和master(即库的本地分支)

这里是我开始工作:

  1. git fetch origin //会从origin最新的代码(或remote
  2. git merge origin/master //合并是最新的代码到本地master
  3. 然后创建新的分支关老爷git checkout -b newbranch
  4. 现在我就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”的消息。

回答

1

newbranch应该是当前分支,以确保您可以检出,那么你得到更新,从您的回购使用取然后合并newbranch与主

关于结帐:分支,与你目前的工作是已经结帐。要切换到另一个分支,您需要结账。如果您已经在分支机构工作,则不需要结账。

git checkout newbranch 
git fetch 
git merge origin/master 

,而不是合并可以用底垫,在这种情况下,最后一行应更换

git rebase origin/master 

合并和重订只更新您与其他分支的信息转移。合并获取主提交并将其添加到您的分支。 Rebase以一种不同的方式做了同样的事情。见Merging vs. Rebasing。现在只需要忘记rebase,只需要合并。

+0

,你会介意阐述请,我是新来的git。上面在我的例子中,我已经创建了newbranch,不确定为什么要调用git checkout或rebase? – pixel

+0

@pixel,增加了一些文字 – Alexan

+0

你介意解释一下这2行的内容吗? (结帐和重新分配)。谢谢 – pixel

0
git pull --rebase origin <branch name> 

它将获取该分支的所有提交并将您的提交放在上面。

+0

你能不能把使用上面我举的例子请,我是新来的git阐述? – pixel

+0

'git pull --rebase origin newbranch' 其中newbranch在repo上有一些新的提交。 –

+0

我还没有在newbranch上做过任何'添加'或'提交'。在合并之前,我必须先做这件事吗?这就是我上面的合并失败的原因吗? – pixel

1

我认为你应该做的:

  1. git stash #store你在一个堆栈

  2. git pull --rebase origin/master当地newbranch的变化#take在当地newbranch起源最新变化

  3. git stash pop #pop存储在堆栈在步骤1中的变化

  4. 如果发生冲突,您应该解决冲突,然后继续工作,直到您推送所有原始更改为止。

+0

@Maciej Jureczko,感谢您的编辑,这是我第一次在stackoverflow中回答问题,我不知道如何编辑格式。 – Maggie

+0

没关系,这就是评论者的所为:)确保你阅读了关于询问和回答的帮助部分:https://stackoverflow.com/help祝你好运! :) –

0

我会推荐顺序:

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 

这正是为您节省一行打字。

相关问题