git (+ LaTeX) branching/merging 工作流程

git (+ LaTeX) branching/merging workflow

当前工作流程

我正在使用 git 来控制我用 LaTeX 写的论文的版本。 我想改进我目前的次优 git 工作流程,因为它需要太多的合并(即它需要时间 + 它会污染日志历史记录)。

目前,我的工作流程如下:

在每个 feature 分支中,我主要只更改一个文件(例如 part/SotA.tex 用于第一个分支)。但是我喜欢与多个分支机构一起工作,这样我就可以更轻松地跟踪在这个或那个方面完成的工作 part/topic.


缺点

但是这个工作流程有一些缺点我想解决:


问题

因此,我希望能够:

  1. 与其他 feature/x 分支共享 feature/n 分支的更改,
  2. 能够概览我在 feature/n 分支上的剩余工作(而不是 $git checkout master + $git merge feature/n

不用那么多合并。
我知道我可以使用更少的分支,但是,如上所述,它们对我很有用,我想保留它们。我认为 rebase -p 可能是一个解决方案,但我对 git 的掌握程度还不足以弄清楚如何继续 - 因为每个 feature/x 分支都源于 develop 并合并到 develop


注意:我是这个工作流程中唯一的提交者,所以我可以根据需要重写历史。

To have an overview of my work, I have to merge each feature/x branch into develop.

提交没有什么神圣的。最简单的可能是使用可丢弃的分支名称进行概述,

git checkout -B overview develop; git merge feature/x feature/y feature/z

然后当你看完后就放弃它,检查其他东西。

Similarly, if I want to import modifications done in another branch (e.g. loading a package), I have to merge back the develop branch into each feature/x branch

不啊。我会让加载的包与子模块一起工作,不再担心它,为那些东西准备一个 "packages" 回购协议,只记得 git add 在提交之前设置当前包,或者做它没有子模块,你可以 git rm -r packages; git checkout develop -- packages 复制你想要的版本。对于其他更改、小的路过式修复等,通常 git cherry-pick 甚至 git cherry-pick --no-commit 就是您真正想要的。