>> Ты не давал ссылку, сказал почитайте про хуки.
Ну таки гугл в помощь! Я даю все необходимое, довольно подробно. Если подробно не рассмотрел, значит сейчас не очень важно. Если очень хочется глубже копнуть - то это уже самому. Но я повторюсь еще раз: ты слишком сильно уходишь в сторону. Тебе надо разобраться с малым и далее уже идти к большему. Ты же пытаешься постигнуть сразу большее. В итоге не познаешь ни большего, ни меньшего, плодя только больше и больше вопросов и непонимания.

> просто git pull он же вроде по умолчанию мастер тянет
git pull по умолчанию и всегда тянет все. Просто тянет это в remote-бранчи. Сделай git remote -v и увидишь красным "скрытые бранчи". То есть по сути, когда ты делаешь git pull, он стягивает все не в текущую ветку, а просто все внешнее в их ветки. А вот дальше происходит следующее: если у текущей ветки указан upstream, то он сразу применяет изменения из remote-ветки. Ты выливал же git push --set-upstream origin with_error, то есть сразу с установкой апстрима. В таком случае, если ты находишься в этой ветке и делаешь git pull, он в том числе и накатит сразу изменения из remote-ветки в твою.

В крайнем случае можешь сделать git log чтобы посмотреть какие сейчас коммиты находятся в твоем текущем бранче.