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
- 更换遥控器
origin
URL
- 从那里继续工作。
这是 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
这是一个有多位开发人员合作的项目。假设所有工作都在 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
frompath_to_work_sb01
path. - 将
path_to_work_sb01
重命名为path_to_work_sb02
- 更换遥控器
origin
URL - 从那里继续工作。
这是 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