如何在git中更新从本地存储库中获取的分支?

时间:2014-08-21 12:35:20

标签: git branch git-branch

如果是重复的问题,请道歉。我是来自perforce的git的新手,术语有点令人困惑。

我做过类似下面的事情。

我从名为master的远程分支克隆了一个本地存储库(比如名为MASTER的文件夹)。

由此,我使用git checkout master; git branch XYZgit-new-workdir命令创建了分支XYZ。

现在我使用git pull更新了本地存储库(文件夹MASTER)以获取最近的更改。

我想将此传播到我的本地存储库中的XYZ分支。

我该怎么做?再次使用git pull

如果我尝试git pull,则表示"当前分支没有跟踪信息。"

那我该怎么办?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用git checkout XYZgit merge master

将master合并到XYZ中

Git Branching - Basic Branching and Merging

答案 1 :(得分:0)

你可能希望rebase你的分支成为主人。

Rebase vs Merge

让我们假设你的历史在拉动之后看起来像这样:

      c---d---e <- Your branch
     /
a---b---f---g---h <- master (after the pull)

衍合

使用rebasedocumentation)时,您的提交图将如下所示:

                  c'---d'---e' <- Your branch
                 /
a---b---f---g---h <- master

您需要使用的命令是git rebase master <your-branch>,但要确保您的工作目录是干净的。如果您有未经修改的更改,则应通过git stash保存。

合并

如果您使用mergedocumentation),它将如下所示,其中i是合并提交。

      c---d---e---i <- Your branch
     /           /
a---b---f---g---h <- master

重新定位的优势

mergerebase之间的区别在于merge将在您的分支中创建一个提交,其中包含您从服务器提取的所有更改。使用rebase,您可以将自己的提交置于提交的提交之上。

在做一个rebase时,你可以通过fast-forward merge完成你的工作,这将产生一个干净的线性历史记录,这将使它更具可读性。

a---b---f---g---h---c'---d'---e' <- Your branch, master

如果你之前合并而不是改组,那就不可能了。


有关该主题的更多信息,您可以查看Git Branching - Rebasing中的gitpro book