#1
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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
|
|||
|
|||
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 |