2017-01-13 5 views
0

Я не могу понять, почему мое слияние обновляет один коммит ... он выглядит, что он обновляет commit Add Color, а не объединяет master с монетами. Sublime не выскакивает, когда я пытаюсь объединить эти ветки. Кто-нибудь может мне помочь? Более того, когда я набираю git commit, у меня есть:Git, слияние ветвей git

На главном ветке Ваша ветка впереди «origin/master» на 2 фиксации. (использование «мерзавец толчок», чтобы опубликовать коммиты) ничего совершить, работая дерево чистого

enter image description here

+0

Не «Ваша ветка актуальна с« происхождением/мастером »? Указывает, что ничего не вытащить? –

+0

Не могли бы вы дать нам 'git log -graph -decorate'? Это покажет ветви ветвей и соединения. В противном случае я не уверен, в чем ваш вопрос? Это похоже на обычное [быстрое переключение] (http://stackoverflow.com/questions/2850369/why-does-git-fast-forward-merges-by-default#2850413) (т. Е. Не требуется никакого слияния потому что не было никаких изменений в 'master', так как« монеты »разветвлены, поэтому он просто перемещает« master »туда, где« монеты »). Кроме того, вы хотели объединить 'master' в' монеты', а не 'монеты' в' master'? – Schwern

ответ

1

Я не уверен, что ваш вопрос, но думаю, что есть две вещи, которые здесь происходят вы можете не полностью понять.

Во-первых, я не думаю, что git merge master coins делает то, что вы думаете.

git merge master coinsне сказать слиться master в coins. В нем говорится о слиянии masterиcoins в проверяемую отрасль. Это потому, что master coins - это список ветвей, которые нужно объединить в текущую ветку. From the docs ...

[мерзавец слияние] включает в себя изменения из названных фиксаций (со времени их истории расходились от текущей ветви) в текущей ветви.

Если master выдан, то он объединяет монеты в мастер. Если выдается coins, то он объединяет master в coins. Если что-то еще проверено, вы получаете так называемое «слияние осьминога» и все три, master, coins, а текущая ветка объединяется в то, что, вероятно, большой беспорядок.

Как указано, вы слились с master, так что git merge master coins - это то же самое, что и git merge coins. Вы объединили coins в master, который, я думаю, вы хотели, но это могло бы испортиться.

Поэтому не используйте этот синтаксис; это может вызвать у вас проблемы, и трудно понять, что на самом деле произошло, глядя на историю команд. Вместо этого используйте git checkout branch-to-merge-into; git merge branch-to-merge-from. Поэтому, если вы хотите слиться с монетами в мастер, git checkout master; git merge coins.


Следующий выпуск касается ускоренного слияния. Это то, что Гит делает, когда нет необходимости в слиянии, когда ветви не расходятся. Например, предположим, что у вас это ...

A - B - C - D - G [master] 
     \ 
      E - F - H [feature] 

С master имеет изменения, которые не являются общими с feature (D и G), она должна сливаться. Итак, git checkout master; git merge feature приводит к новому слиянию.

A - B - C - D - G - I [master] 
     \  /
      E - F - H [feature] 

Но если бы не было никаких новых фиксаций на master, у вас есть это (master указывает на C).

  [master] 
A - B - C - E - F - H [feature] 

feature, как говорят, не отклонялись от master. Нет необходимости в слиянии, поэтому Git не беспокоится об этом. Когда вы git checkout master; git merge feature он просто перемещает master Н.

     [master] 
A - B - C - E - F - H [feature] 

Git может это сделать, потому что «ветви» действительно только этикетки, указывая на фиксацию. Теперь master и feature точка с тем же фиксацией.

Я рекомендую избегать быстрой перемотки вперед при слиянии ветвей функций, поскольку он теряет важную археологическую информацию. Кто-то, смотрящий на репозиторий позже, не может сказать, что E, F и H были сделаны как одна ветвь.

Я рекомендую всегда объединять ветви функций с git merge --no-ff. Это заставляет Git совершать слияние, и кто-то, кто пытается понять ваш код в будущем, может знать, что E, F и H являются частью большего целого.

A - B - C --------- I [master] 
     \  /
      E - F - H [feature] 

Слияния фиксация, я, также дает вам место для описания отрасли и добавить такие вещи, как ссылка на вопрос/ошибку/билет, описывающее то, что филиал был для.

Смежные вопросы