git - 如何避免 GitHub/BitBucket 上的 merge 提交 hell

标签 git github bitbucket

我们在我们的 repo 中有很多这样的提交:

Merge branch 'master' of bitbucket.org:user/repo

每当开发人员将他/她的本地分支同步到顶级存储库时,就会发生这种情况。

有没有办法避免这种 merge 提交 hell 使所有 repo 日志困惑?在以某种方式发起 pull 请求时可以避免它们吗?

我知道我可以执行 git rebase,如果这只在我的本地 VM 中完成,GitHub/BitBucket UI 中是否有任何等效项?

你们是怎么做到的?

最佳答案

merge 前对特征分支进行 rebase

如果你想避免 merge 提交,你需要确保所有提交都是快进的。您可以通过确保您的功能分支在 merge 之前干净地 rebase 到您的开发线上来做到这一点,如下所示:

git checkout master
git checkout -b feature/foo

# make some commits

git rebase master
git checkout master
git merge --ff-only feature/foo

Rebase 也有很多标志,包括使用 -i 标志的交互式 rebase ,但如果您希望尽可能简单并希望保留所有内容,则可能不需要它 merge 的分支历史。

使用--ff-only标志

除了 rebase 之外,使用 --ff-only 标志将确保只允许快进提交。如果改为 merge 提交,则不会进行提交。 git-merge(1) 手册页说:

--ff-only

Refuse to merge and exit with a non-zero status unless the current HEAD is already up-to-date or the merge can be resolved as a fast-forward.

关于git - 如何避免 GitHub/BitBucket 上的 merge 提交 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358418/

相关文章:

Android studio - 整个 .idea 目录是否应该在 git ignore 中?

git - 使用git时如何解决IntelliJ中的 "Mark Resolved"冲突?

git - 我该如何解决这些 Git GC 问题?

git - 在轮询 SCM 时将 ssh-agent 与 jenkins 一起使用

git - 我应该如何在 300 多个网站上使用 git?

git - 即使 git log 确认 pull ,通过 git pull origin master pull 的修改后的文件也没有显示为已更改

github - 如何在特定文件夹中搜索文本

Github actions/upload-artifact@v2 与 windows-latest 中断

configuration - 是否可以针对bitbucket管道中不同的更改文件触发不同的任务?

Azure 部署卡住