Таким образом, как отметил Ry-, если в удаленной ветви не было никаких изменений, вывод будет Already up to date.
, и фиксация отсутствует. Поэтому я не уверен, что это касается поведения, которое вы считаете проблематичным, но я подозреваю, что оно может:
Допустим, у вас есть локальное изменение и удаленное изменение, и вы тянете пульт с помощью git fetch
git merge
Ваше дерево будет выглядеть так:
£ git log --oneline --graph --decorate
* 153b72e (HEAD -> master) Merge branch 'b2'
|\
| * eb48067 (b2) b2 mod
* | 6397e45 master mod
|/
* 034e374 initial
У нас есть два фактических коммита, а теперь коммит слияния. Немного грязно для, возможно, крошечного изменения конфигурации, зарегистрированного на машине сборки или что-то в этом роде.
Так что вместо этого мы можем сделать это так (вместо git merge
):
£ git rebase b2
First, rewinding head to replay your work on top of it...
Applying: master mod
£ git log --oneline --graph --decorate
* 49de99c (HEAD -> master) master mod
* 5019681 (b2) b2 mod
* 1f8b73e initial
Помимо пропуска merge commit
, это также пропускает identical commits
. Другими словами, это то, что нужно делать, если удаленная ветка на самом деле не является тем, что вы считаете веткой (хотя технически это так).