这是一个由多个开发人员工作的项目。假设所有工作都在master分支上完成,并且有一个远程仓库,该仓库现在具有以下历史记录:
A --- B --- C
今天,我继续将这个存储库克隆到我的一个沙箱中(我们称其为work_sb01
)。我做了一些工作,并在本地提交了更改(可能只有一个提交或多个提交)。该沙箱的Git历史记录如下所示:
A --- B --- C --- X
从今天起两天,我将同一个存储库克隆到另一个沙箱中(我们称之为work_sb02
)。正如预期的那样,仓库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
答案 0 :(得分:1)
这是从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
答案 1 :(得分:0)
如果在path_to_work_sb02
中进行的pull --rebase path_to_work_sb01
没有给您正确的顺序,则可以...考虑相反的做法:
path_to_work_sb02
路径中拉回path_to_work_sb01
。path_to_work_sb01
重命名为path_to_work_sb02
origin
网址