[英]git (+ LaTeX) branching/merging workflow
我正在使用git
来控制我用LaTeX
编写的论文的版本。 我想改善我目前次佳的git
工作流程 ,因为它需要太多的合并(即,它花费时间+污染了日志历史记录)。
master
分支“最终版本”进行发布(即,当我向主管发送工作的当前最新版本时); develop
分支,该分支聚集了多个feature/x
分支并包含预发行补丁。 feature/x
,例如:
feature/state-of-the-art
feature/conclusion
feature/page-layout
feature/global-settings
在每个feature
分支中,我大多只更改一个文件(例如,第一个分支的part/SotA.tex
)。 但是我喜欢与多个分支一起工作,这样我可以更轻松地跟踪在该部分或主题上完成的工作。
但是,此工作流程有一些我想解决的缺点:
要概述我的工作 ,我必须将每个feature/x
分支合并到develop
。 这使我做了很多合并提交,这污染了我的历史记录。 确实,我的工作流程实际上看起来像这样(其中d3
, d4
和d5
才在这里,使我能够整体了解自己的工作):
同样, 如果我想导入在另一个分支中完成的修改 (例如,加载程序包),则必须将develop
分支合并回每个feature/x
分支中:
因此,我希望能够 :
feature/x
分支共享feature/n
分支的更改, feature/n
分支上的概述(而不是$git checkout master
+ $git merge feature/n
) 没有这样做太多的合并。
我知道我可以使用更少的分支,但是,如上所述,它们对我很有用,我希望保留它们。 我认为rebase -p
可能是一个解决方案,但是我对git
掌握不足以弄清楚如何进行-因为每个feature/x
分支都源自并合并为develop
。
注意:我是此工作流程中唯一的提交者,因此我可以根据需要重写历史记录。
要概述我的工作,我必须将每个feature / x分支合并到development中。
提交并没有什么神圣的。 最简单的方法可能是使用可丢弃的分支名称来进行概述,
git checkout -B overview develop; git merge feature/x feature/y feature/z
然后看完就放弃了,然后检查其他内容。
同样,如果我想导入在另一个分支中完成的修改(例如,加载程序包),则必须将develop分支合并回每个feature / x分支中。
Naaahh。 我会让加载的软件包与子模块一起工作,而不再担心它,为这些东西准备一个“ packages”仓库,只记得在提交之前将git add
的当前软件包集git add
进去,或者在没有子模块的情况下进行操作只是git rm -r packages; git checkout develop -- packages
git rm -r packages; git checkout develop -- packages
可以跨您想要的版本进行复制。 对于其他更改,可以进行小巧的行车修补程序,例如,通常足够的git cherry-pick
甚至git cherry-pick --no-commit
就是您真正想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.