我不想最后出现82个特征分支,因此我想知道将特征分支合并到母版后立即删除特征分支的潜在缺点。
工作流程:
git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
这里有什么问题吗?
我不想最后出现82个特征分支,因此我想知道将特征分支合并到母版后立即删除特征分支的潜在缺点。
工作流程:
git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz
这里有什么问题吗?
git reflog
它。然后签出哈希
Answers:
合并后删除是通常的方法。这就是为什么git branch -d yourbranchname
在删除分支之前要进行检查以确保分支已完全合并。
我可以考虑保留一个分支的原因有几个:您可能希望保留它,以防一旦它投入生产后就会有错误回来,或者您想要历史记录。
无论哪种情况,都可以选择在删除分支之前对其进行标记。标签就像分支一样,它是一个指向提交的指针,除了一些细微的区别:1)瓷通常在结帐时不在git show-branch或tab-autocomplete等探索性命令中显示标签,2)检出一个会使您进入一个独立的(非引用)头3)您可以留下“标记消息”,这会将标记像提交一样另存为对象存储中的对象。
这样,您可以保留历史记录,并且如果确实需要进行错误修复,则建议您仅在master的基础上创建一个新分支以进行修复。
合并后删除,但我总是做一个git merge --no-ff
,以避免快速转发,这样分支历史记录就可以在图形上看到。我喜欢具有功能分支从开发分支离开的地方以及它在哪里加入的历史:
这取自Vincent Driessen的一个成功的Git分支模型,这是一个非常好的git工作流,我将其应用于大多数项目。
merge --no-ff
又回到了母版,因为就像您说的那样,您可以看到历史记录。
典型的工作流程将是
// Create new branch
$ git checkout -b myfeature
// and then do some changes and commit them
// Switch to master branch
$ git checkout master
// Merge myfeature to master. --no-ff will always keep branch information.
$ git merge --no-ff myfeature
// Delete myfeature branch
$ git branch -d myfeature
// Push the changes
$ git push origin master
我认为这是典型的工作流程(合并后删除)
编辑因此,我认为不是将它们合并,至少对于短暂的分支而言,是将其重新建立到主数据库上。那么您最终得到的是线性变化历史记录,整个分支成为主干的一部分。在这种情况下,所有更改都在那里,因此您显然不需要副本。