如果是重复的问题,请道歉。我是来自perforce的git的新手,术语有点令人困惑。
我做过类似下面的事情。
我从名为master的远程分支克隆了一个本地存储库(比如名为MASTER的文件夹)。
由此,我使用git checkout master
; git branch XYZ
和git-new-workdir
命令创建了分支XYZ。
现在我使用git pull
更新了本地存储库(文件夹MASTER)以获取最近的更改。
我想将此传播到我的本地存储库中的XYZ分支。
我该怎么做?再次使用git pull
?
如果我尝试git pull
,则表示"当前分支没有跟踪信息。"
那我该怎么办?
答案 0 :(得分:0)
您是否尝试使用git checkout XYZ
和git merge master
?
答案 1 :(得分:0)
你可能希望rebase
你的分支成为主人。
让我们假设你的历史在拉动之后看起来像这样:
c---d---e <- Your branch
/
a---b---f---g---h <- master (after the pull)
使用rebase
(documentation)时,您的提交图将如下所示:
c'---d'---e' <- Your branch
/
a---b---f---g---h <- master
您需要使用的命令是git rebase master <your-branch>
,但要确保您的工作目录是干净的。如果您有未经修改的更改,则应通过git stash
保存。
如果您使用merge
(documentation),它将如下所示,其中i
是合并提交。
c---d---e---i <- Your branch
/ /
a---b---f---g---h <- master
merge
和rebase
之间的区别在于merge
将在您的分支中创建一个提交,其中包含您从服务器提取的所有更改。使用rebase,您可以将自己的提交置于提交的提交之上。
在做一个rebase时,你可以通过fast-forward merge
完成你的工作,这将产生一个干净的线性历史记录,这将使它更具可读性。
a---b---f---g---h---c'---d'---e' <- Your branch, master
如果你之前合并而不是改组,那就不可能了。
有关该主题的更多信息,您可以查看Git Branching - Rebasing中的gitpro book。