繁体   English   中英

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

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

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

A --- B --- C

今天我继续将这个存储work_sb01到我的一个沙箱中(我们称之为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

这是从 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

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

  • path_to_work_sb01路径中拉出 --rebase path_to_work_sb02
  • path_to_work_sb01重命名为path_to_work_sb02
  • 更改其远程origin URL
  • 从那里继续工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM