我不想留下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 merge --no-ff
命令以避免快进,以便在图表上显示分支历史。我喜欢了解功能分支从开发分支中分离和再次合并的历史记录:
这段内容摘自Vincent Driessen的《成功的Git分支模型》,这是一种非常好的Git工作流程,我在大多数项目中都会应用它。
merge --no-ff
回到主分支上,因为这样可以看到历史记录。 - bstpierregit branch -d yourbranchname
会检查分支是否完全合并后才会进行删除。 // 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
我能想到两个原因,你可能会想要保留一个功能分支一段时间:
实际上,大多数情况下,在合并后删除分支就可以了。
我认为这是典型的工作流程(合并后删除)
编辑 因此,至少对于短期分支,我认为更好的做法是将它们变基到主分支上。然后你就会得到一个线性的变更历史记录,并且整个分支都成为主干的一部分。在这种情况下,你已经拥有了所有的更改,所以显然不需要复制。
git reflog
中搜索它。然后检出哈希值即可。 - slebetmangit
将修剪任何不可达的提交,但不早于2周。如果您创建一个分支,进行一些提交,然后删除该分支并且从未合并或执行其他任何操作,则这些提交将是不可达的,并最终被垃圾回收。 - goldenratio