问题描述
我总是喜欢在本地 rebase -i
我的更改,并为我的功能分支留下非常干净和有用的提交历史记录。这样做的另一个好处是,可以在使用 branch -d
完全放心地将本地/远程分支合并到主(或主)分支后修剪它们。
例如,我在合并分支后使用以下别名/宏而不压缩它:
# ~/.gitconfig file snippet
[alias]
cleanmerged = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d"
但是,当与团队只是 YOLO 提交的项目一起工作时,然后要求通过在 github 上强制合并难看的混乱,我不知道如何自信地清理本地分支,所以我最终只是留下一切,这使得以后清理变得更加不确定,因为它取决于内存。
有什么办法可以解决这个问题吗?任何可以自信地检查压扁的分支是否已经存在于主(或主)中的咒语?
解决方法
我为此目的编写了一个自定义的 ruby 脚本,我已经使用了好几年了。这几天我会把它作为红宝石发布。我将自定义 ruby 脚本保存在 ~/dev/ruby
然后在您的 shell 配置文件中添加一个别名,例如
alias git-clean-branches="ruby ~/dev/ruby/git_clean_branches.rb"
或者你可以在没有 .rb
的情况下重命名它并使其可执行
chmod +x git_clean_branches
并链接它
ln -s ~/dev/ruby/git_clean_branches /usr/local/bin/git_clean_branches
如果您的 $PATH
变量加载了 usr/local/bin
,那么您就很好。
在壁球合并到 main/master 之后,继续删除所有三个分支:您的本地分支、您的远程跟踪分支和服务器上的分支。
不会丢失历史记录或数据,因为拉取请求使“分支”永远可访问。