forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 22.05.2020, 12:27
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию git workflow

Victor Sudakov написал(а) к All в May 20 14:56:34 по местному времени:

Dear All,

Что-то мне git тяжело пошёл после mercurial.

Какой workflow нужно использовать, если я хочу просто отслеживать свежие изменения в remote репозитории (чтобы не оффтопик - в git://github.com/mmatuska/mfsbsd и чтобы при этом держать свои локальные патчи (отдавать их наверх не собираюсь).

Вот склонировал я репозиторий, периодически делаю "git pull" - всё хорошо. А как комиттить свои локальные патчи? В интернете пишут - в master ничего не коммитить (WTF, это моя копия master). А тогда как?

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20170303-b20170303
Ответить с цитированием
  #2  
Старый 22.05.2020, 15:53
Alexey Fayans
Guest
 
Сообщений: n/a
По умолчанию git workflow

Alexey Fayans написал(а) к Victor Sudakov в May 20 14:38:11 по местному времени:

Нello Victor!

On Fri, 22 May 2020 at 14:56 +0700, you wrote to All:

VS> Вот склонировал я репозиторий, периодически делаю "git pull" - всё
VS> хорошо. А как комиттить свои локальные патчи? В интернете пишут - в
VS> master ничего не коммитить (WTF, это моя копия master). А тогда как?

Да можно и в мастер коммитить. А можно сделать ветку, git checkout -b localbranchname, и коммитить туда что угодно. Потом можно из мастера брать только интересующие коммиты. Ну или делать rebase периодически.

Вариант с веткой хорош тем, что не нужно делать merge при каждом pull. Особенно если для merge нужно исправить какие-нибудь конфликты.


... Music Station BBS | https://bbs.bsrealm.net | telnet://bbs.bsrealm.net
--- GoldED+/W32-MSVC 1.1.5-b20180707
Ответить с цитированием
  #3  
Старый 22.05.2020, 16:25
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию git workflow

Victor Sudakov написал(а) к Alexey Fayans в May 20 19:09:34 по местному времени:

Dear Alexey,

22 May 20 14:38, you wrote to me:

VS>> Вот склонировал я репозиторий, периодически делаю "git pull" -
VS>> всё хорошо. А как комиттить свои локальные патчи? В интернете
VS>> пишут - в master ничего не коммитить (WTF, это моя копия master).
VS>> А тогда как?

AF> Да можно и в мастер коммитить.

Под hg я всегда так и делал, а тут пишут "не делать". Но под hg у меня условия другие, я потом эти изменения пушил обратно в основной репозиторий.

AF> А можно сделать ветку, git checkout -b
AF> localbranchname, и коммитить туда что угодно.

Хорошо.

AF> Потом можно из мастера
AF> брать только интересующие коммиты. Ну или делать rebase периодически.

А с этого места поподробнее. Вот я создал ветку localbranch_name и переключился в неё. Коммичу в нее локальные изменения. Как мне теперь а) стягивать обновления с мастера и б) мержить их в свою ветку local_branchname? Допустим для простоты, что я хочу стягивать с оригинала и мержить все изменения без исключения.

AF> Вариант с веткой хорош тем, что не нужно делать merge при каждом pull.

А перед пул надо переключаться (checkout) обратно на master?

AF> Особенно если для merge нужно исправить какие-нибудь конфликты.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20170303-b20170303
Ответить с цитированием
  #4  
Старый 22.05.2020, 19:05
Alexey Fayans
Guest
 
Сообщений: n/a
По умолчанию git workflow

Alexey Fayans написал(а) к Victor Sudakov в May 20 17:50:49 по местному времени:

Нello Victor!

On Fri, 22 May 2020 at 19:09 +0700, you wrote to me:

AF>> Потом можно из мастера
AF>> брать только интересующие коммиты. Ну или делать rebase
AF>> периодически.
VS> А с этого места поподробнее. Вот я создал ветку localbranchname и
VS> переключился в неё. Коммичу в нее локальные изменения. Как мне теперь
VS> а) стягивать обновления с мастера и б) мержить их в свою ветку
VS> localbranchname? Допустим для простоты, что я хочу стягивать с
VS> оригинала и мержить все изменения без исключения.

man git-rebase

Там всё гораздо понятнее, чем если я попытаюсь на пальцах объяснить.. :)

AF>> Вариант с веткой хорош тем, что не нужно делать merge при каждом
AF>> pull.
VS> А перед пул надо переключаться (checkout) обратно на master?

Ага. Примерно так:

git checkout master
git pull
git rebase master localbranchname


... Music Station BBS | https://bbs.bsrealm.net | telnet://bbs.bsrealm.net
--- GoldED+/W32-MSVC 1.1.5-b20180707
Ответить с цитированием
  #5  
Старый 22.05.2020, 19:56
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию git workflow

Victor Sudakov написал(а) к Alexey Fayans в May 20 22:26:52 по местному времени:

Dear Alexey,

22 May 20 17:50, you wrote to me:

AF>>> Потом можно из мастера
AF>>> брать только интересующие коммиты. Ну или делать rebase
AF>>> периодически.
VS>> А с этого места поподробнее. Вот я создал ветку localbranchname
VS>> и переключился в неё. Коммичу в нее локальные изменения. Как мне
VS>> теперь а) стягивать обновления с мастера и б) мержить их в свою
VS>> ветку localbranchname? Допустим для простоты, что я хочу
VS>> стягивать с оригинала и мержить все изменения без исключения.

AF> man git-rebase

AF> Там всё гораздо понятнее, чем если я попытаюсь на пальцах объяснить..
AF> :)

git-rebase - Reapply commits on top of another base tip

Не, я точно не хочу такую хрень. Где-то в гите перемудрили. По-твоему это понятно звучит?

If <upstream> is not specified, the upstream configured in
branch.<name>.remote and branch.<name>.merge options will be used (see
git-config(1) for details) and the --fork-point option is assumed. If
you are currently not on any branch or if the current branch does not
have a configured upstream, the rebase will abort.


AF>>> Вариант с веткой хорош тем, что не нужно делать merge при каждом
AF>>> pull.
VS>> А перед пул надо переключаться (checkout) обратно на master?

AF> Ага. Примерно так:

AF> git checkout master
AF> git pull

Ладно.

AF> git rebase master localbranchname

А нельзя просто мержить из мастера в свою ветку, без rebase и прочих модификаций истории?

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20170303-b20170303
Ответить с цитированием
  #6  
Старый 22.05.2020, 19:56
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: git workflow

Alex Korchmar написал(а) к Victor Sudakov в May 20 18:43:42 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

VS>>> всё хорошо. А как комиттить свои локальные патчи? В интернете
git add && git commit

VS>>> пишут - в master ничего не коммитить (WTF, это моя копия master).
если не собираешься сдавать навоз в стол находок - комить, в remote у тебя и
не получится.

AF>> А можно сделать ветку, git checkout -b
AF>> localbranchname, и коммитить туда что угодно.
imho, лишний геморрой и ненужные телодвижения на каждом обновлении, раз
сдавать ты ничего не планируешь.

Отдельно можешь поизучать git stash, это позволяет отодвинуть локальные
незакоммиченные правки в сторону при обновлениях, hg так не умеет.


> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #7  
Старый 23.05.2020, 16:52
Alexey Fayans
Guest
 
Сообщений: n/a
По умолчанию git workflow

Alexey Fayans написал(а) к Victor Sudakov в May 20 15:40:39 по местному времени:

Нello Victor!

On Fri, 22 May 2020 at 22:26 +0700, you wrote to me:

AF>> git rebase master localbranchname
VS> А нельзя просто мержить из мастера в свою ветку, без rebase и прочих
VS> модификаций истории?

Можно просто коммитить в мастер, при каждом git pull будет происходить merge, как ты и хочешь.


... Music Station BBS | https://bbs.bsrealm.net | telnet://bbs.bsrealm.net
--- GoldED+/W32-MSVC 1.1.5-b20180707
Ответить с цитированием
  #8  
Старый 23.05.2020, 18:27
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: git workflow

Alex Korchmar написал(а) к Victor Sudakov в May 20 17:07:50 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

VS> git-rebase - Reapply commits on top of another base tip
VS> Не, я точно не хочу такую хрень. Где-то в гите перемудрили.
это не в гите, это в мозгах его пользователей и разработчиков такой таракан.

Вкратце: "твоя история нам нах.й не нужна! Засунь ее себе в жопу!"
"Мы желаем видеть правки как будто ты их делал поверх самой нашей
наираспоследней версии. Твоя история нам нах.й не нужна, ты понял?!"
"Порежь помельче, и заверни каждую правку отдельно! У нас в экран не влазиет!"

Именно под такой уебанский воркфлоу заточена эта поделка, поскольку ее автор
четверть века извлекает патчи из потока мусора в рассылке.
И именно это она предназначена автоматизировать. История ему нах не нужна, да.

И тем более - твоя.

Поэтому есть механизм, переносящий все твои патчи поверх самой распоследней
версии в удаленном репо. (с возможностью тебе руками их каждый раз изменять
под эту версию, поскольку, разумеется, само нихрена не перенесется)

VS> По-твоему это понятно звучит?
это вполне понятно - если бы ты понимал, для чего вообще нужен rebase.
Тебе он, вероятнее всего - не нужен, тебе нужен эпизодический merge и своя
история на фоне этих мержей (включая и не ограничиваясь "а вот тут пришлось
отказаться от своих улучшений, потому что апстрим все окончательно переломал")

VS> А нельзя просто мержить из мастера в свою ветку, без rebase и прочих
VS> модификаций истории?
можно. Просто потом ты не сможешь вернуть эти изменения автоматически.


> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #9  
Старый 23.05.2020, 18:28
Alex Korchmar
Guest
 
Сообщений: n/a
По умолчанию Re: git workflow

Alex Korchmar написал(а) к X-Comment-To: Victor Sudakov в May 20 17:11:21 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Alexey Fayans <Alexey.Fayans@f1997.n5030.z2.fidonet.org> wrote:

VS>> А нельзя просто мержить из мастера в свою ветку, без rebase и прочих
VS>> модификаций истории?
AF> Можно просто коммитить в мастер, при каждом git pull будет происходить
AF> merge, как ты и хочешь.
кстати, да, это тоже неплохой вариант - жить без всяких веток, если они тебе
в принципе не нужны.
merge будет автоматическим, вообще не требующим участия, пока не сломается.
Работать с апстримом придется через remote/origin - но, собственно, и пох.

Аналога для веток - afaik, не существует, там каждый раз надо вручную мержить.


> Alex

--- ifmail v.2.15dev5.4
Ответить с цитированием
  #10  
Старый 23.05.2020, 22:22
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию git workflow

Victor Sudakov написал(а) к Alex Korchmar в May 20 01:03:00 по местному времени:

Dear Alex,

22 May 20 18:43, you wrote to me:

VS>>>> всё хорошо. А как комиттить свои локальные патчи? В интернете
AK> git add && git commit

VS>>>> пишут - в master ничего не коммитить (WTF, это моя копия
VS>>>> master).
AK> если не собираешься сдавать навоз в стол находок - комить, в remote у
AK> тебя и не получится.

А гит потом ругается на "you are ahead of master", забить?

AF>>> А можно сделать ветку, git checkout -b
AF>>> localbranchname, и коммитить туда что угодно.
AK> imho, лишний геморрой и ненужные телодвижения на каждом обновлении,
AK> раз сдавать ты ничего не планируешь.

Если прилетевшее от аплинка при очередном pull вызовет конфликт с моими правками, всё поломается? У меня такое уже было по-моему, когда я коммитил прямо в master.

AK> Отдельно можешь поизучать git stash, это позволяет отодвинуть
AK> локальные незакоммиченные правки в сторону при обновлениях, hg так не
AK> умеет.

В смысле не умеет, "hg shelve" это разве не то же самое?

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20170303-b20170303
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:16. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot