During my talk on restoring lost work in git at TechBash, I got some great questions about resolving conflicts. As a result, I realized people find current changes vs incoming changes very confusing.
I am people.
It doesn't help that some conflict resolution user interfaces switch "current" to "ours" and "incoming" to "theirs". Sometimes all the changes are mine! Who am I sharing them with!?
Most of my git talks boil down to giving people good mental models for reconciling changes ( merging and rebasing ). Turns out, understanding current vs incoming changes boils down to more of the same.
Merging
When you run a merge command, you don't get to specify the base. Wherever you're checked out (HEAD), that's the base. In other words, the base is your current branch. Current changes come from your current branch. Incoming changes are the changes you're trying to merge into the base.
For example, I've checked out the main branch.…