Git:如何在不添加合并提交的情况下从另一个存储库中拉取

Git: How to pull from another repository without adding a merge commit

这是一个有多位开发人员合作的项目。假设所有工作都在 master 分支上完成,并且今天有一个具有以下历史记录的远程仓库:

A --- B --- C

今天我继续将这个存储库克隆到我的一个沙箱中(我们称之为 work_sb01)。我做了一些工作,并在本地提交了我的更改(可能只有一次提交或多次提交)。此沙箱的 Git 历史如下所示:

A --- B --- C --- X

两天后,我将同一个存储库克隆到另一个沙箱中(我们称之为 work_sb02)。正如预期的那样,repo HEAD 已经移动,所以历史现在可能看起来像这样:

A --- B --- C --- D --- E

我需要能够提取我在 work_sb01 中所做的更改并将它们引入 work_sb02。我目前正在使用以下命令执行此操作:

cd <path_to_work_sb02>
git pull <path_to_work_sb01> master

这完成了工作,但它创建了一个合并提交。我现在需要避免将合并提交添加到项目 Git 日志中。我怎样才能从 work_sb01 中提取更改并使它们成为历史记录中的最新提交?换句话说,work_sb02 的本地历史应该如下所示:

A --- B --- C --- D --- E --- X

如果在 path_to_work_sb02 中做 pull --rebase path_to_work_sb01 没有给你正确的顺序,你可以...考虑做相反的事情:

  • pull --rebase path_to_work_sb02 from path_to_work_sb01 path.
  • path_to_work_sb01 重命名为 path_to_work_sb02
  • 更换遥控器originURL
  • 从那里继续工作。

这是 work_sb02 中执行此操作的正确方法:

cd <path_to_work_sb02>
git remote add sb01 <path_to_work_sb01> 
git fetch sb01 
git checkout master 
git rebase --onto master master sb01/master