如何将源本地存储库中的更新最后几次提交与使用 git subtree 创建的子目录合并?

问题描述

假设我有一个迷你项目,其 git 历史记录如下所示:

$ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* b53390c (HEAD -> main) mini-project 3
* d4ba0ec mini-project 2
* 63d4aff mini-project 1

...以及一个根项目存储库,其历史记录如下所示:

$ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* 70925ba (HEAD -> main) root 2
* 538af79 root 1

我想将迷你项目添加为根存储库中的子文件夹。我可以手动添加更新的内容,然后在根存储库中执行一次提交。 但是,我想保留小项目的提交(b53390cd4ba0ec63d4aff)。

我找到了一种使用 git subtree 来做到这一点的方法;它感觉就像是实现此目的的完美工具:

$ git subtree add -P mini-project ../mini-project/.git main
git fetch ../mini-project/.git main
remote: Enumerating objects: 9,done.
remote: Counting objects: 100% (9/9),done.
remote: Compressing objects: 100% (4/4),done.
remote: Total 9 (delta 0),reused 0 (delta 0),pack-reused 0
Unpacking objects: 100% (9/9),713 bytes | 1024 bytes/s,done.
From ../mini-project/
 * branch            main       -> FETCH_HEAD
Added dir 'mini-project'

$ git log --graph --decorate --pretty=oneline --all --abbrev-commit
*   16160c3 (HEAD -> main) Add 'mini-project/' from commit 'b53390c1057cb58ba34a6775b5c0c1334bba2cb4'
|\
| * b53390c mini-project 3
| * d4ba0ec mini-project 2
| * 63d4aff mini-project 1
* 70925ba root 2
* 538af79 root 1

但是,这是我的问题。 一旦迷你项目中有更多提交,我如何将更新(参见下面的 ea486b48f78c20)合并到根存储库的 mini-project 子目录中?

$ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* ea486b4 (HEAD -> main) mini-project 5
* 8f78c20 mini-project 4
* b53390c mini-project 3
* d4ba0ec mini-project 2
* 63d4aff mini-project 1

我认为 git subtree merge 命令不会在这里帮助我。

如果 git subtree 在这里不理想,我可以使用其他(更优雅的)方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...