1

我分叉了分支 A 并创建了 B。现在,A 已被其他人更新,我想将这些提交带到我的 B 分支,这样我就可以确保我在那里所做的事情仍然适用于新的 A 内容.

我怎样才能做到这一点?Git 的术语(拉取、提取、合并等)非常不直观,至少在早期是这样的:(

4

1 回答 1

2

我会建议(如果没有人已经从 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”:操作是“分支”(而不是“分叉”)。

于 2013-07-18T08:23:32.580 回答