git-没有分支的分支


1

我正在使用git管理对发行版的调整,并为每种口味生成一个ISO。我目前有4个分支,不包括master。在这些分支共享文件时管理它们的最佳方法是什么,我想轻松地在分支之间来回移动更改。我正在使用Cherry Pick将更改拉到每个分支。但是,我必须为每个所需的提交执行该操作,并查看每个分支的日志。

我还有什么其他选择,以及关于如何最好地组织这些分支机构的其他想法?

Answers:


2

每个分发分支最初应从master分支分支出来,然后将提交直接添加到分发分支以使其唯一。为了使它们保持最新状态,有时会将更改从合并master到分发分支中。

例如,如果您的分发分支是onetwo,则以下提交图显示针对主分支进行了提交,则更改被合并到每个分支中。

分配分支与母版中合并的更改

# Create distribution branch and make it unique
git checkout -b one master
work... work...
git commit

# Make some changes on master
git checkout master
work... work...
git commit

# Merge the changes into the distribution branch
git checkout one
git merge master

当主分支包含通用应用程序设置时,我就使用了这种策略,但是我也想将生产环境设置也保留在源代码中。每个生产环境都有提交的特定设置,当我想更新生产环境时,我首先将master合并到生产分支中。


我一直在使用这种方法,但是我正在测试仅具有不同的目录,并使用诸如meld之类的工具来合并更改。如果您保持最新状态,上述方法很有效,但是我在大约1个月的工作中做了很多更改。当我合并并重新设置基础(删除不想要的提交)时,似乎丢失了很多东西。
沃尔特

@Walter我不确定为什么会发生这种情况,但是您可以从使用git-rerere中受益。您可以使用此命令偶尔记录合并分辨率,以便最终决定执行合并时,可以自动解决许多合并冲突。
Stephen Jennings

1

我将使用的策略将取决于各个分支之间的差异以及需要在所有分支之间传播的更改类型。

如果差异是相对恒定的,并且是在不经常更改的代码库的一部分中造成的(例如,在Makefile中将变量设置为不同的值,而大多数开发是在源代码文件中进行的),则应设置分支,在中进行开发master,然后git rebase master在需要更新分支时在分支中使用。

但是,如果分支之间的差异本身是可变的,我会merge根据需要选择和选择。


我是这样做的,您如何建议选择性地合并提交?当我使用rebase时,我遇到了丢失更改的问题,这些更改本可以在那里宣誓就职。
沃尔特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.