Тяги и толчки атомарны в Git и Mercurial.Это означает, что они никогда не позволят вам получить частично выдвинутые наборы изменений.Вы всегда получите полный набор изменений.
Обновление: я просто подумал, что вы можете бояться «Что если кто-то выдвинет серию наборов изменений, и я получу некоторые из них».Тогда все дело в коммуникации и рабочем процессе, которые принимаются в проекте.
Часто соглашается, что каждый коммит в транке (master или как вы его называете) должен оставлять код в согласованном состоянии.Если кто-то знает, что он внесет изменения, которые создадут временные несоответствия, он должен сделать это в ветке и, если он готов, слить ее в магистраль.Затем транк переводится в состояние ветви за один коммит, так что вы всегда будете видеть его непротиворечивым.
Обновление 2: Как сказано в комментарии tonfa - в Mercurial push является атомарным.Я сделал несколько простых тестов в git, и толчки здесь тоже атомарные.Таким образом, вам не нужно бояться таких несоответствий, если вы знаете, что другие разработчики работают над изменениями.(хотя более ранние утверждения о филиалах все еще действительны).