我是 git 新手(以及一般的版本控制),我正在尝试找出如何最好地实现我的工作流程。我正在从事一个(个人)项目,该项目涉及许多“永久”分支,即完全独立的程序,这些程序是从公共代码库中分叉出来的,永远不会合并到主分支中。(这是因为我是一名研究模拟模型的科学家,我正在尝试很多新事物,只是为了看看它们是否有有趣的结果。如果有,我目前复制整个项目文件夹,以便我可以稍后再回来。我的目标是使用 git 分支来代替。)
因为这些分支是永久性的,所以我想知道是否有一种简单的方法可以将我在一个分支中实现的功能转移到另一个分支,同时保留两个分支之间的差异。例如,假设我的存储库的树如下所示:
model_a
/
initial commit
\
model_b
就我而言,model_a
并且model_b
正在使用大致相同的模拟代码来模拟两种不同的事物。它们可能在模拟代码的内部循环中的某些参数值和/或某些细节方面有所不同,但围绕它的一般“基础设施”将是相同的。现在,在工作时branch_a
,假设我实现了一种可视化结果的新方法:
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b
我想知道的是,有没有我可以输入的 git 命令,除非合并冲突,否则会导致:
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b --- model_b_with_visualisation_code
换句话说,我只想获取用于变成 的提交model_a
,model_a_with_visualisation_code
并将这些提交的副本应用到model_b
分支的末尾。或者至少,我认为这就是我想要的。
它看起来git rebase
应该是我想要的工具,但我很难理解它,而且我找不到任何说明这个用例的例子。似乎也git rebase
删除了旧版本的提交,而不是复制它们。
我希望这个问题很清楚。正如我所说,我是 git 新手,很多主要概念对我来说仍然有点模糊。例如,我不完全确定上述树中的标签是标签还是分支,还是只是提交。如果我误解了某些东西应该如何工作,我会很感激任何澄清。