|
|
|
|
|
by brandmeyer
3774 days ago
|
|
> It is a great way to have a clean linear history. Why is this considered by so many people to be a Good Thing? Engineering is an inherently messy human process, and the repository history should reflect what actually happened. To that end, I've been advocating a merge-based workflow instead: - The fundamental unit of code review is a branch.
- Review feedback is incorporated as additional commits to the branch under review.
- The verb used to commit to the trunk or other release series is 'merge --no-ff'. Under that model, merges are very common, particularly merges from the trunk to the feature being developed. But that's OK, because its what actually happened. When most people perform a 'rebase', they are actually performing a merge, while dropping the metadata for that merge. |
|
I see merits in both approaches: Rebase seems to be good when you want to focus on the project minus the process, while merging seems to be good when you want to know the process behind the project. For larger projects with multiple contributors, I think the merging approach is better because of the process visibility. For smaller projects with one or two developers, a rebase approach could be "cleaner" when looking through the logs later on.
I'm interested to hear what other's opinion on the topic as well.
[0] - https://git-scm.com/book/en/v2/Git-Branching-Rebasing#Rebase...