我找不到任何使用git管理版本的"正确"方法.说,我有master,release-1,release-2和release-3分支.版本1已经发布,我只对其进行了错误修正和发布版本标记.第2版将很快发布,我主要在这个分支上发展,而在3年我开发了将来需要的东西.
当我在release-2上添加一些功能时,它也应该转到3,但不是1,我应该:
当我需要在所有版本中进行更改时,我是否应该在master上进行更改并将其挑选到所有分支中?
我是否应该掌握最新的(第3版分支)或者第3版的开发人员,并在我需要发布4分支之前合并到主服务器?
当我在发行版1或版本2上修复时,我应该合并或者选择它来掌握或者说它?
我不太确定我什么时候应该挑选,什么时候应该合并,如果分支之间的代码流正确的话.
我不小心在我的仓库中添加了一个数据库转储(超过1 GB),推了几天后注意到了这一点.我使用git filter-branch删除文件,过期的reflog并运行git gc来修剪未使用的对象,但数据库转储blob仍在repo中.我用过 哪个提交有这个blob?,但确实发现任何提交有blob的提交.如何删除这个或如何找出它在git gc期间没有被删除的原因?
文档说:"因为git-cherry比较变更集而不是提交ID(sha1),所以你可以使用git-cherry来查明你在本地提交的提交是否已经在不同的提交ID下应用."
让我们来看看:
$ git cherry master release-1.1.0 | head -1
- 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
$ git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
...
(cherry picked from commit 409c61b3304373a73c787fdf9c08cc338934b74d)
...
Run Code Online (Sandbox Code Playgroud)
git show显示了409c ..和533e的相同变更集
$ git br --contains 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
release-1.1.0
$ git br --contains 409c61b3304373a73c787fdf9c08cc338934b74d
master
release-1.0.4
Run Code Online (Sandbox Code Playgroud)
这意味着变更集同时包含master和release-1.1.0.那么为什么git cherry显示533e ..?