1

Тема: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Хай. В мене є дві гілки - develop та master. Зараз я роблю коміти в develop (в терміналі), а потім йду на сам github, роблю pull request з develop в master, і мерджу.
Як мені зробити останню операцію сидячи в себе в терміналі, і не переходячи на сам сайтик github'а?

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

2

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

git checkout master
git merge develop
Навчаюсь вчитись, щоб навчатись.
Подякували: FakiNyan, Monolith, 221VOLT, leofun01, karmeljuk5

3

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

ну ок, в слід. раз спробую

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

4

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

фігня то все, воно не дає пушити в мастер, каже - спочатку зтягни, але якщо я зтягну, то воно ж затре те, що вийшло після

git merge develop

?

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

5

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

В ідеалі:

1. git pull у мастері, щоб гіт не лаявся.
2. git merge develop
3. git push origin master

А взагалі, якщо у тебе в мастері лежав валідний код, який змінювався після бранчування девелопа і девелоп твій має його доповнити, то тре git rebase у девелопі зробити, інакше реально мержем своїм перетреш все.

I belong to the Dead Generation.
Подякували: sensei, FakiNyan, 0xDADA11C7, 221VOLT, Q-bart, leofun016

6

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Master мерджиться в девелопер і на ньому фіксяться всі конфлікти. І тоді робочий бранч мерджиться назад в мастер.

Подякували: Q-bart, sensei, leofun013

7

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Vo_Vik написав:

Master мерджиться в девелопер і на ньому фіксяться всі конфлікти. І тоді робочий бранч мерджиться назад в мастер.

Ліпше rebase: безпечніше (у мерж-конфліктах) і послідовніше буде, а суть, загалом, та сама.

I belong to the Dead Generation.
Подякували: 221VOLT, bunyk, leofun013

8

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

щось я не наздоганяю, як те rebase зробе, що мені тре, якщо воно дозволяє змінювати історію комітів і все таке

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

9

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

FakiNyan написав:

щось я не наздоганяю, як те rebase зробе, що мені тре, якщо воно дозволяє змінювати історію комітів і все таке

Припустимо ситуацію:

master: git log

commit A
commit B
commit D


develop: git log

commit C
commit D

Тобто, після комміту D ти відбранчувався на девелоп і зробив комміт C. Тим часом, master завдяки "колезі, що сидить навпроти через два столи" посунувся вперед на два комміти A, B.

git rebase фактично зливає ці дві гілки докупи. При цьому твій комміт C, врешті-решт, стане верхнім у списку коммітів у git log:

C
A
B
D

Враховуючи, що ти міг наваляти комітів більше за один і вони можуть сильно конфліктувати з мастером, git rebase розумно діє: він пробує по одному мержити комміти з мастера на те, що є у тебе (грубо кажучи), і кожен конфлікт мержа тобі доведеться вирішувати, допоки не відрібейсиш усе.


Якщо ти один кодиш у своєму репозиторії, то можеш на це покласти і просто git merge + git push -f, і не парити мозок, поки не припече. :)

I belong to the Dead Generation.
Подякували: sensei, 221VOLT, FakiNyan, ReAl, leofun015

10

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

А як хочеш пострадати то є ще git log i git cherry-pick

Подякували: Bartash, 221VOLT2

11

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Vo_Vik написав:

А як хочеш пострадати то є ще git log i git cherry-pick

Ну от, налякали ми з тобою Бабаєм Черипиками та Ребейсами дитину, що тепер робити? Точно на меркуріал свічнеться :D

I belong to the Dead Generation.
Подякували: 221VOLT1

12

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

та я черіпікав ще задовго до створення цієї теми, просто то я все робив на якомусь сайті по вивченню Ґіту, і давно, то вже й забув

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

13

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Прихований текст
понапридумують всякого ...
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.

14

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

okay, що я роблю - зробив новий коміт на develop
тепер переходжу на master і роблю git pull
потім роблю gut rebase develop і дивлюсь, що буде

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

15

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

наче ніяких помилок, тепер роблю git push origin master
а от запушити не вийшло, пише що треба git pull знову, після чого каже - Already up-to-date! Merge made by the 'recursive' strategy

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

16

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

і тепер вже запушилось

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

17 Востаннє редагувалося bunyk (26.12.2017 15:45:49)

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Bartash написав:

Ліпше rebase: безпечніше (у мерж-конфліктах) і послідовніше буде, а суть, загалом, та сама.

В правилах української не встигли додати що між словами "rebase" і "безпечніше" обов'язково пишеться "не".

http://www.benjaminfleischer.com/2010/1 … -torvalds/
https://habrahabr.ru/post/179123/
https://habrahabr.ru/post/179673/

Подякували: 221VOLT, Bartash, leofun013

18

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

А я от навпаки мердж-коміти не люблю, і тільки ребейзом і користуюсь
Певно такі проблеми з’являються після якогось числа програмістів на один репозиторій

Maybe a = Just a | Nothing

19

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

Блін. Факі не роби такого. Тебе за таке на фірмі бити будуть. Ребейс девелопменту роблять на основі мастера, а не мастера на основі девелопменту. Воно звичайно чисто фізично можна таке робити, але при цьому ти повністю ігноруєш логіку по якій створювались системи контролю версій.

Подякували: Bartash1

20 Востаннє редагувалося Bartash (26.12.2017 18:33:44)

Re: Ґітгаб, як зробити коміт в одну гілку, і замерджити в іншу з термінала

bunyk написав:
Bartash написав:

Ліпше rebase: безпечніше (у мерж-конфліктах) і послідовніше буде, а суть, загалом, та сама.

В правилах української не встигли додати що між словами "rebase" і "безпечніше" обов'язково пишеться "не".

http://www.benjaminfleischer.com/2010/1 … -torvalds/
https://habrahabr.ru/post/179123/
https://habrahabr.ru/post/179673/

З гітмержем трапляються ще тонші моменти - гіт іноді не лається на конфлікти, а тихо ковтає. Я прихильник мержити те, що має мержитися (іншими словами, натягати шапку на голову, а не на груди, якщо бранч робився від них, а голова з'явилася потім) - не просто ж так придумали ребейс :).

Загалом, правильно поставлений процес code review нівелює зменшує небезпеку ребейса.

I belong to the Dead Generation.
Подякували: 0x9111A, leofun012