2

我按照以下方式组织了我的工作流程:

master 分支用于开发,包含源代码和一些实用程序脚本。

release 分支是分布式的,包含可执行文件和一些附加文件。

当我第一次创建发布分支时,我从中删除了所有源代码,并添加了编译后的可执行文件。当我想制作下一个版本时,我会

git checkout release

git merge --no-ff -Xours master

即使我使用 -Xours 选项,每个更改的源文件都会导致删除/修改冲突。我必须手动删除所有冲突的文件,然后提交。有没有办法自动解决这个冲突,强制删除的文件保持删除状态?

4

3 回答 3

1

您正在以完全不同的方式使用 Git 和源代码控制管理。我并不是说它错了,但你应该考虑重新考虑你想用 git repo 实现什么。

在一般实践中,release分支也应该包含代码。而且您总是从release分支构建您的生产可执行文件。然后将它们移动到其他地方。

也就是说,如果您也想保留可执行文件的版本。创建另一个 git 存储库以将它们保留在那里。这样,您可以更轻松地维护可执行文件。

如果您使用的是 maven/java,那么我会推荐 Maven Repo,它的唯一目的是管理构建的工件。

于 2012-06-08T05:09:57.740 回答
1

不要使用相同的存储库来存储从您的代码生成的人工制品。您将膨胀您的历史,并使推送和获取缓慢以进行常规开发。最终你将不得不放弃这种方法,因为新的克隆需要太长时间。标准化您的人工制品拉链的命名约定,并通过其他方式运送它们。它可能是另一个 git 存储库,但它不能是您处理代码的地方。如果您愿意,可以通过子模块在 2 个存储库之间建立链接。

于 2012-06-08T11:15:37.290 回答
0

当您从存储库中删除一些文件并提交一些更改时,您需要使用 -a 选项。广告文档说:

-a, --all
   Tell the command to automatically stage files that have been
   modified and deleted, but new files you have not told git about are
   not affected.

这会从已删除的文件中清除我的所有存储库。当我从其他分支合并时,我没有冲突。我不确定这会对你有所帮助。我希望是的。

于 2012-06-08T05:20:47.923 回答