Защо git не слива промени, когато два клона са различни, но без нови ангажименти в нито един от клоновете?

Например,

Моят главен клон има неща в него. Друг клон, наречен other_branch, има stuff+more_stuff в него. Всеки клон няма какво да ангажира.

Ако проверя master, след това се опитам да обединя other_branch, git казва „Вече е актуален“. и нищо не стана. защо more_stuff няма да бъде обединен в master в този случай? Така ли е проектиран git?

ЗАБЕЛЕЖКА: other_branch е създаден от по-стар комит на master.


person trusktr    schedule 19.03.2012    source източник


Отговори (2)


Много е просто. Ако git казва „Вече е актуален“, това означава, че клоновете не са се разминавали. Два клона са се разминавали, ако поне един от клоновете съдържа ангажимент, който другият клон няма.

Не съм сигурен какво имате предвид под има неща + more_stuff в него. Ако сте добавили нови файлове към other_branch (или сте променили съществуващи файлове) и сте използвали "git add" и "git commit", историята на other_branch ще се е отклонила от главния клон. Тъй като git казва, че няма промени за сливане, историята не се е променила в този клон, т.е. не сте ангажирали нищо.

person ralphtheninja    schedule 19.03.2012
comment
Разбрах. Не е много очевидно за начинаещ. other_branch съдържа същите ангажименти като master, защото го инициирах от по-стар комит на master. Бях объркан, защото когато проверявам other_branch, виждам различни файлове, така че си помислих, че git merge ще обедини файловете в master. Сега разбирам как работи. git merge се основава на ангажиментите, а не на текущото работно дърво. - person trusktr; 19.03.2012

Това се случва само когато клонът, който се опитвате да обедините, вече се съдържа в текущия клон.

И така, more_stuff, който споменахте, вече е в главния клон.

Можете да използвате gitk, за да проверите визуалното дърво на вашите клонове.

person Hakan Deryal    schedule 19.03.2012
comment
gitk? не съм сигурен какво е това - person Huan Zhang; 13.07.2016
comment
Това е GUI по подразбиране. Повече информация тук. - person Hakan Deryal; 14.07.2016