gpt4 book ai didi

git - 在 git 中,如何将在分支 'A' 中实现的功能 merge 到分支 'B' 中?

转载 作者:太空狗 更新时间:2023-10-29 14:28:21 26 4
gpt4 key购买 nike

我是 git(和一般的版本控制)的新手,我正在尝试找出如何最好地实现我的工作流程。我正在从事一个涉及许多“永久”分支的(个人)项目,即完全独立的程序,这些程序从公共(public)代码库中 fork 出来,永远不会 merge 到主分支中。 (这是因为我是一名研究模拟模型的科学家,我正在尝试很多新事物,只是为了看看它们是否有有趣的结果。如果有,我目前复制整个项目文件夹,以便我可以稍后再回来。我的目标是为此目的使用 git 分支。)

因为这些分支是永久性的,所以我想知道是否有一种简单的方法可以将我在一个分支中实现的功能转移到另一个分支,同时保留两个分支之间的差异。例如,假设我的存储库的树如下所示:

               model_a
/
initial commit
\
model_b

在我的例子中,model_amodel_b 使用大致相同的模拟代码来模拟两个不同的事物。它们可能在某些参数的值和/或模拟代码的内部循环中的某些细节方面有所不同,但围绕它的一般“基础结构”将是相同的。现在,在处理 branch_a 时,假设我实现了一种可视化结果的新方法:

               model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b

我想知道的是,是否有一个我可以输入的 git 命令,除非 merge 冲突,结果会是这样的:

               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 的新手,很多主要概念对我来说仍然有点模糊。例如,我不完全确定上面树中的标签是标记还是分支还是只是提交。如果我误解了某些东西应该如何工作,我将不胜感激任何澄清。

最佳答案

是的,这是可能的(参见其他答案),但我觉得您可能会尝试解决错误的问题。

与其在模型上发散,不如以一种可以在不同模型之间轻松切换的方式构建模拟代码,同时保持库与所有周围代码和可视化共享。

在开始构建新模型时,您仍然可以分支,但将所有代码重新 merge 在一起可能是有利的,这样最后,您只有一个模拟,您可以在其中只选择您想要的模型那个运行。

否则,一段时间后,您将拥有大量略有不同的分支,它们都包含不同的错误,并且您(可能)不再真正知道哪个是哪个。

关于git - 在 git 中,如何将在分支 'A' 中实现的功能 merge 到分支 'B' 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com