Вы не делаете ничего плохого - когда вы делаете git pull github master
, git переходит в хранилище, указанное удаленным github
, выбирает все необходимое для ветви master
, а затем объединяет его с вашей текущей веткой. До этого у вас была следующая история:
O --- A (master)
... где O
- это фиксация с сообщением «firts commit», а A
- это фиксация, которая внесла ваши изменения в A.java
. У вашего друга, тем временем, есть история:
O --- B (master)
... и это было отправлено на GitHub. Когда ваш git pull github master
объединяет это с вашей историей, он создает «коммит слияния» для представления состояния дерева с изменениями из обеих веток master
:
O --- B --- M (master)
\ /
---A ---
Если бы вместо этого вы хотели сохранить историю линейной, вы могли бы сделать git pull --rebase github master
, которая вместо этого "переиграла бы" ваши коммиты, которых нет в удаленной версии ветки поверх этой версии удаления. отрасль:
o --- B --- A' (master)
Некоторые люди предпочитают это - мне лично все равно.