来自提交的Rebase

时间:2012-05-21 22:48:24

标签: git

我有一个我编码的框架,它作为主分支进入 Github 存储库。进入该分支只是框架的核心文件,因此我将其命名为核心分支。 现在进入其他分支机构,我列出了使用所述核心框架的项目 - 我这样做是因为我使用分支机构会更容易,但正如我刚刚发现的那样,它不是。严重。

总而言之:我有一个核心分支,以及一个使用该核心的项目分支。现在在项目分支上,我主要提交与项目相关的提交(添加了图像X,修改了样式表Y),但有时我会修改核心,以使其更好。

现在我想做什么,并且我认为这很简单,当我开始研究核心而不是项目时,将更改合并到核心分支。 有几个解决方案,这一切都开始让我困惑,因为我不想弄乱我的核心分支,我该怎么办?

我知道我可以挑选提交并推送它,但我真的想保留核心文件的更改历史记录,因此我被引导到变基础。 问题是:如果我将我的核心分支重新绑定到项目分支上的特定提交,它将推送与核心无关的所有文件和内容。那么如何将重新绑定某个提交(而不是,这似乎是默认提交?)。

以下是关于项目分支上的提交可能如下的一些想法:

项目分支

00:12 - Added image X
00:14 - Modified stylesheet Y to have a pink background (pink is pretty)
00:16 - Modified class core.background to handle pink background
00:18 - Modified class core.string to always capitalize Pink (because it's so pretty)

如何将最后两次提交合并到核心分支,而不合并与项目相关的两个第一个,并保留历史记录 - 即。将这两个更改保留为核心两个提交而不是一个?


编辑:更精确。 我的核心框架定义了项目的文件夹组织,因此需要位于项目文件夹的根目录下。这就是为什么它不是一个子模块,这本来就是梦想。 另外,我尝试了一个核心分支,但显然你不能分叉你自己的项目。

如果除了分支之外还有其他办法可以做我想做的事情,我全都听见了。

1 个答案:

答案 0 :(得分:1)

git分支并不像那样 - 分支都与存储库相关。将项目或项目的一部分分成不同的分支并不是正确的方法。最终,大多数分支应该合并到某种类型的release分支中,或者丢弃。

  

我有一个核心分支,以及一个使用该核心的项目分支。现在在项目分支上,我主要提交与项目有关的提交......

     

我真的想保留核心文件的更改历史记录[单独]

从那以后,我认为这听起来很像你有两个独立的存储库的好用例,一个用于core-files,一个用于project - 你想保留{{1的历史记录}和core分开。我建议将project拉入core-files projects,而不是将它们保存在不同分支的同一个存储库中。这会立即给你带来几个好处:

  • projectcore历史记录是分开的。
  • core与其他项目一起使用非常简单;导入core作为git submodule的{​​{1}}。
  • otherprojectproject的历史记录更容易维护,因为您不必再​​在分支之间挑选了。