| English | 中文 |
Original links:
The Git workflow of a large team is often not purely an issue of the branching model.
As the scale of R&D grows, the real challenge is to connect these things together:
The focus of infrastructure practices like ByteDance’s is that the Git process needs to be supported by a platform. What developers see daily are MRs, checks, permissions, and release tickets, with branches and repositories lying underneath.
When a team is small, everyone can collaborate by just mentioning it in a chat group.
When the team grows, without platform rules, branch naming, review requirements, merge methods, and release processes will gradually fragment.
A single requirement might simultaneously modify the client, backend, platform tools, and configuration repositories.
If each repository has different rules, cross-repository debugging and releasing become uncontrollable.
As long as the merge button can be clicked on a PR / MR, teams will lean towards rapid integration.
If CI results, code ownership, and risk warnings do not enter the merge path, Code Review can easily become nothing more than a rubber-stamp approval.
Team conventions should not just stay in documents; they should be turned into platform actions as much as possible:
Large teams need to distinguish:
These permissions should ideally be bound to code ownership, service owners, and on-call roles.
CI, lint, unit tests, security scans, package size, and compatibility checks should not just be for “taking a quick look.”
They must become explicit gatekeeping rules before merging, and when they fail, it should be possible to pinpoint the person responsible.
Cross-repository changes should at least have a unified requirement ID, release ticket, or change ticket to link multiple MRs together.
In this way, during review, testing, release, and rollback, it is clear that these changes belong to the same initiative.
When a team exceeds dozens of people, the success or failure of the Git workflow mainly depends on three things:
Just saying “we use Gitflow” or “we use trunk-based development” is not enough.
Practices like ByteDance’s are suitable to be placed in the team collaboration and GitHub engineering governance chapters, acting as a reminder: