将 (git) origin 合并到我当前的本地工作分支

merging (git) origin to my current local working branch

我是 git 的新手,我想澄清一下我最近几天在使用 git 时所做的事情,但我不太确定这是正确的做法。

因此,我们有 origin(远程存储库)和 master(该存储库的本地分支)

以下是我开始工作的方式:

  1. git fetch origin //从origin(或remote
  2. 获取最新代码
  3. git merge origin/master // 将最新的代码合并到本地 master
  4. 然后我在 master git checkout -b newbranch
  5. 之外创建新分支
  6. 现在我在 newbranch 上工作了 2-3 天,我意识到,我应该刷新我的 newbranch,因为其他人可能已经添加了一些新代码(我相信,术语称为 "reverse integrating")

我该怎么做最后一步?

我相信如果我这样做 git fetch origin/git merge origin/master,那只会刷新(或反向整合)master

如果我这样做 git fetch origin/git merge origin/newbranch,那将不起作用,我会收到类似“merge: origin/newbranch- not something we can merge”的消息。

newbranch 应该是当前分支,以确保您可以检出它,然后使用 fetch 从您的 repo 获取更新,然后将 newbranch 与 master 合并

关于结帐:您当前使用的分支已经结帐。要切换到另一个分支,您需要检查它。如果您已经在使用分支机构,则不需要结帐。

git checkout newbranch
git fetch
git merge origin/master

您可以使用 rebase 而不是合并,在这种情况下,最后一行应该被替换

git rebase origin/master

合并和变基只是用来自其他分支的信息更新你的分支。合并从 master 获取提交并将它们添加到您的分支。 Rebase 以稍微不同的方式做了同样的事情。参见 Merging vs. Rebasing。现在忘记变基,只做合并。

git pull --rebase origin <branch name> 

它将获取该分支的所有提交并将您的提交置于其上。

我认为你应该这样做:

  1. git stash #将您对本地新分支的更改存储在堆栈中

  2. git pull --rebase origin/master #取本地newbranch的origin最新变化

  3. git stash pop #pop stack中存储的step1中的变化

  4. 如果有冲突,你应该解决冲突,然后继续工作,直到你把所有的更改都推送到origin。

我会推荐这个序列:

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 pullgit fetch ; git merge相同,您也可以这样做:

# bring master up to date
git checkout master
git pull

# bring newbranch up to date
git checkout newbranch
git merge master

这正好为您节省了一行输入。