GIT克隆分支到另一个目录中的旧提交

时间:2017-03-30 20:57:39

标签: git repo

我有同一个项目的2个目录,我们称之为目录A和B.

这两个文件夹是从另一个位置的主git repo克隆的,所以他们都是从同一个git repo提交开始的。

现在A继续使用原始代码并修复了一些小错误,并提交了更改,因此git分支看起来像这样:

A: (original)-(bug fix 1) - (bug fix 2) - (bug fix 3)

虽然B,我决定改变应用程序的外观,但我尚未提交。所以B git分支看起来像这样:

B: (original)

我想要做的是从原始克隆中合并这些2 git repos,以便我可以拥有以下内容:

A: (original)-(bug fix 1) - (bug fix 2) - (bug fix 3)--------(merge both)

           \                                                    /
branch B:   \ -----------------(New version look) -------------

2 个答案:

答案 0 :(得分:3)

  

你好我有2个同一个项目的目录,让我们称之为目录A和B.这两个文件夹是从另一个位置的主git仓库克隆的,

而不是克隆存储库使用

git worktree

Git worktree于2007年在git repo的contrib文件夹下引入,名为new-workdir。在git v2.5中,重命名为worktree

最简单的语法是:

git worktree add <second path>/<branch name>

将在您的计算机上创建另一个文件夹,允许您同时处理不同的分支

git worktree将创建2个单独的工作文件夹,彼此分开,同时指向同一个存储库。

这将允许您对新工作树上的任何实验进行操作,而不会对存储库本身产生任何影响。在附图中,您可以看到 2个单独的工作文件夹,但它们都使用单个仓库并共享内容。

以下是有关如何创建新工作树的示例及其结果:

enter image description here

  

我想要做的是从原始克隆中合并这些2 git repos,以便我可以拥有以下内容......

现在,由于您正在使用相同的存储库,因此您可以 merge cherry-pick ,而无需拉动或推送到遥控器,因为您不需要使用遥控器 全部本地!!!

答案 1 :(得分:2)

如果你可以回到那个回购,但你不想推lss_new_case,你可以:

  • 转到您的A本地克隆
  • 将B本地克隆添加为远程:

    <div id="mission_XXXXX">
  • 获取并合并:

    B