我分叉了分支 A 并创建了 B。现在,A 已被其他人更新,我想将这些提交带到我的 B 分支,这样我就可以确保我在那里所做的事情仍然适用于新的 A 内容.
我怎样才能做到这一点?Git 的术语(拉取、提取、合并等)非常不直观,至少在早期是这样的:(
我分叉了分支 A 并创建了 B。现在,A 已被其他人更新,我想将这些提交带到我的 B 分支,这样我就可以确保我在那里所做的事情仍然适用于新的 A 内容.
我怎样才能做到这一点?Git 的术语(拉取、提取、合并等)非常不直观,至少在早期是这样的:(
我会建议(如果没有人已经从 B 拉出):
你所拥有的是一个分支,在上游 repoA
中完成了新的演变和可能的提交:
a--a--a (origin/A)
/
a--a--a A
\
b--b--b (B, local branch)
首先确保A
与上游 repo 内容保持同步origin/A
::
git checkout A
git pull
这会给你:
a--a--a--a--a--a (A, origin/A)
\
b--b--b (B, local branch)
然后你会B
在上面完成你的本地修改A
(我想这里A
有一个上游分支,这意味着它确实跟踪origin/A
,你可以检查git branch -avvv
)
git checkout B
git rebase A
这给了你:
a--a--a--a--a--a (A, origin/A)
\
b'--b'--b' (B, local branch)
请注意,这会更改 的历史记录B
,因此如果B
已经推送,您将不得不push --force origin B
,如果其他人已经开始使用 ,这可能会很危险B
。
请参阅(有关变基技巧的更多信息):
注意:“fork a branch”不是推荐的表达方式,因为 fork 更常用于指代服务器端的克隆 repo:请参阅“ Git fork is git clone? ”。
相反,您会说:“我分支A
并创建了B
”:操作是“分支”(而不是“分叉”)。