git branch
От: Аноним  
Дата: 28.02.14 11:07
Оценка:
Как из upstream вытащить новую ветку в origin ?
Re: git branch
От: Clerk  
Дата: 28.02.14 12:21
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как из upstream вытащить новую ветку в origin ?

Вытянуть все ветки:
git fetch origin
Re[2]: git branch
От: Аноним  
Дата: 28.02.14 17:14
Оценка:
Здравствуйте, Clerk, Вы писали:

C>Здравствуйте, <Аноним>, Вы писали:


А>>Как из upstream вытащить новую ветку в origin ?

C>Вытянуть все ветки:
C>
git fetch origin


А как делать пулреквест одного багфикса на разные ветки?
Re[3]: git branch
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 01.03.14 08:10
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>А как делать пулреквест одного багфикса на разные ветки?


cherry-pick коммита с фиксом.
The God is real, unless declared integer.
Re[4]: git branch
От: aik Австралия  
Дата: 01.03.14 10:40
Оценка:
Здравствуйте, netch80, Вы писали:

А>>А как делать пулреквест одного багфикса на разные ветки?

N>cherry-pick коммита с фиксом.

+1
или git rebase, если патчей в багфиксе много.
Re[5]: git branch
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 01.03.14 11:49
Оценка:
Здравствуйте, aik, Вы писали:

А>>>А как делать пулреквест одного багфикса на разные ветки?

N>>cherry-pick коммита с фиксом.

aik>+1

aik>или git rebase, если патчей в багфиксе много.

rebase при далеко разошедшихся базовых версиях это практически нереально.
The God is real, unless declared integer.
Re[4]: git branch
От: . Великобритания  
Дата: 01.03.14 17:38
Оценка:
Здравствуйте, netch80, Вы писали:

n> А>А как делать пулреквест одного багфикса на разные ветки?


n> cherry-pick коммита с фиксом.


как вариант — заребейзить коммит(ы) фикса на "git merge-base branch1 branch2 ... branchN" и потом просто мержить. Получится красивая история.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: git branch
От: Clerk  
Дата: 04.03.14 06:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А как делать пулреквест одного багфикса на разные ветки?


Или просто смержить:
git merge bugfixbranch
Re[4]: git branch
От: Аноним  
Дата: 05.03.14 13:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


А>>А как делать пулреквест одного багфикса на разные ветки?


N>cherry-pick коммита с фиксом.


Да, в общем это работает.
Но... Все как-то сложно.
Чего-то я недопонимаю, как все это держать в актуальном состоянии.
Может что-то тут убрать.
(Длинный опус ниже.)

Итак:

В upstream имеются ледующие ветки.
master
2.4.x
2.5.x

В клоне на гитхабе origin
master
2.4.x
2.5.x

на локальном комьютере в клоне то же:
master
2.4.x
2.5.x

Все это я трогать боюсь, что-бы не запутаться. Но уже запутался.

Теперь я делаю локальные ветки
various-cleanup-master на основе локального master
various-cleanup-2.4.x на основе локального 2.4.x
various-cleanup-2.5.x на основе локального 2.5.x
И запихиваю все это на origin

Итого у меня один upstream и три клона. Так?

Начинаю править various-cleanup-master.
Поменял один файл, закомитил.
Сделал cherry-pick на various-cleanup-2.4.x, various-cleanup-2.5.x

Сделал пулреквесты на три ветки.
Все пучком показывает один файл в каждой ветке поменялся.

Но пока я менял веки cherry-pick на various-cleanup-2.4.x, various-cleanup-2.5.x
ветки master, 2.4.x, 2.5.x на upstream поменялись.

Делаю
1)
git fetch upstream

2)
git checkout master
git pull upstream master
git push origin master

3)
git checkout 2.4.x
git pull upstream 2.4.x
git push origin 2.4.x

4)
git checkout 2.5.x
git pull upstream 2.5.x
git push origin 2.5.x

Получается ветки master, 2.4.x, 2.5.x локальные и на origin в обновленном состоянии. Это правильно я понял?

Но в various-cleanup-master, various-cleanup-2.4.x, various-cleanup-2.5.x я уже тоже поменял ещё один файл, закомитил и сделал cherry-pick на него. Но в origin пока не слил.

И вот тут я начинаю дико тупить. Помогите братцы.

С одной стороны ветки master, 2.4.x, 2.5.x на upstream, origin и локально изменились и надо бы пропихнуть все обновления в various-cleanup-master, various-cleanup-2.4.x, various-cleanup-2.5.x.
А с другой стороны various-cleanup-master, various-cleanup-2.4.x, various-cleanup-2.5.x. я тоже изменил.
Как все это правильно объединить?

Можно сделать git rebase maser|2.4.x|2.5.x на локальных ветках, но это оторвет локальную ветку от origin по предыдущему комиту.
И у меня уже будет по два файла на ветку для push в локальных ветках, и по одному на на ветку в origin.
Ветки рассинхронизированны и git push origin без --force уже не проходит.
Если сделать --force, чего там будет с пулреквестом?

Можно сделать: git pull --rebase origin various-cleanup-master,
но обновления из master, 2.4.x, 2.5.x upstream или origin все ещё не пришпилены. Это так?

После этого можно делать git push origin без --force
git push origin various-cleanup-master и в пулреквесте автоматически оказываются уже два файла на ветку. И это вроде бы то что надо.
Но я хотель бы разные файлы в одном пулреквесте не объединять.


В конце-концов в результате разных экспериментов оказалось, что в пулреквест просочились файлы из чужого пулреквеста или коммита.
Сравниваю локалную с upstream четыре фала изменено, иду на гитхаб в пулреквесте уже семь файлов. Три чужие.
И это я уже совсем не понимаю. Как это могло произойти и что я делаю не так сообразить не удалось. А очень хочется
И как их теперь оттуда убрать?


Пока состряпал вот такой скрипт:
(Что добавить или отнять?
cherry-pick не вставил, так как не знаю как получить код последнего коммита из various-cleanup-master)

git fetch upstream
git checkout master
git pull upstream master
git push origin master

git checkout various-cleanup-master
git pull --rebase origin various-cleanup-master
git push origin various-cleanup-master

git checkout 2.4.x
git pull upstream 2.4.x
git push origin 2.4.x

git checkout various-cleanup-2.4.x
git pull --rebase origin various-cleanup-2.4.x
git push origin various-cleanup-2.4.x

git checkout 2.5.x
git pull upstream 2.5.x
git push origin 2.5.x

git checkout various-cleanup-2.5.x
git pull --rebase origin various-cleanup-2.5.x
git push origin various-cleanup-2.5.x

git checkout master


Если чего не понятно спрашивайте. Я и сам ничего не понял.
Re[5]: git branch
От: Ziaw Россия  
Дата: 06.03.14 16:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В upstream имеются ледующие ветки.

А>master
А>2.4.x
А>2.5.x

А>В клоне на гитхабе origin

А>master
А>2.4.x
А>2.5.x

А>на локальном комьютере в клоне то же:

А>master
А>2.4.x
А>2.5.x

А>Все это я трогать боюсь, что-бы не запутаться. Но уже запутался.


А>Теперь я делаю локальные ветки

А>various-cleanup-master на основе локального master
А>various-cleanup-2.4.x на основе локального 2.4.x
А>various-cleanup-2.5.x на основе локального 2.5.x
А>И запихиваю все это на origin

А>Итого у меня один upstream и три клона. Так?


Я правильно понял, что upstram это чей-то репо, который вы форкаете на гитхабе и хотите что-то исправить?

Исправления делаются в одной ветке, master или somebug-fix, которую вы создаете в своем локальном репозитарии. Потом делаете push этого бранча в свой fork. После этого делаете пулл-реквест в master основного репо.

Если основной за это время куда-то ушел и ваши правки конфликтуют с чужими, то пулреквест мейнтейнеры не смогут принять автоматом. Только тогда вам надо добавить в свой локальный репозитарий адрес основного, обычно его именуют upstream. Затем затягиваете и мерджите себе его master (get fetch upstream && git merge upstream/master), разрешаете конфликты, комитите и после этого снова пущите его в свой форк (origin). Точно уже не помню, обновляется ваш пулреквест автоматом или надо зайти и проапдейтить его.

В общем случае пулреквест надо делать именно в master (или в конкретную версию, если фикс не нужен в мастере, но именно в одну ветку). Мейнтейнеры основного репо сами разнесут багфикс в другие ветки, не надо пытаться сделать это за них.
Re[6]: git branch
От: Аноним  
Дата: 06.03.14 18:00
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, Аноним, Вы писали:


А>>В upstream имеются ледующие ветки.

А>>master
А>>2.4.x
А>>2.5.x

А>>В клоне на гитхабе origin

А>>master
А>>2.4.x
А>>2.5.x

А>>на локальном комьютере в клоне то же:

А>>master
А>>2.4.x
А>>2.5.x

А>>Все это я трогать боюсь, что-бы не запутаться. Но уже запутался.


А>>Теперь я делаю локальные ветки

А>>various-cleanup-master на основе локального master
А>>various-cleanup-2.4.x на основе локального 2.4.x
А>>various-cleanup-2.5.x на основе локального 2.5.x
А>>И запихиваю все это на origin

А>>Итого у меня один upstream и три клона. Так?


Z>Я правильно понял, что upstram это чей-то репо, который вы форкаете на гитхабе и хотите что-то исправить?


Точно так.

Z>Исправления делаются в одной ветке, master или somebug-fix, которую вы создаете в своем локальном репозитарии. Потом делаете push этого бранча в свой fork. После этого делаете пулл-реквест в master основного репо.


Ага, ага!

Z>Если основной за это время куда-то ушел и ваши правки конфликтуют с чужими, то пулреквест мейнтейнеры не смогут принять автоматом. Только тогда вам надо добавить в свой локальный репозитарий адрес основного, обычно его именуют upstream. Затем затягиваете и мерджите себе его master (get fetch upstream && git merge upstream/master), разрешаете конфликты, комитите и после этого снова пущите его в свой форк (origin). Точно уже не помню, обновляется ваш пулреквест автоматом или надо зайти и проапдейтить его.


апстрим я уже добавил.
а обновления подтягиваю так:
get pull upstream master

мастер я не менял, поэтому конфликтов нет.
Но как из этого мастера подтянуть обновления в somebug-fix
мержить мастер в багфикс?

Или
git checkout somebug-fix
git pull
тоже подойдет?

Z>В общем случае пулреквест надо делать именно в master (или в конкретную версию, если фикс не нужен в мастере, но именно в одну ветку). Мейнтейнеры основного репо сами разнесут багфикс в другие ветки, не надо пытаться сделать это за них.


Мне попались другие. Сами просят пулреквестить в мастер и две стабильные ветки.

Основная проблема, пока, в том, что после нескольких пуллов из апстрима и пушей в свой форк я вдруг вижу в своем пулреквесте чужие файлы.
Каким то образом они перекочевывают через серию pull-push?

Пока отбиваюсь git rebase и новый пуш через форсе. После этого чужие файлы пропадают.

И еще неясно, зачем мне удаленный форк, если я в нем ничего не меняю?
Re[7]: git branch
От: Ziaw Россия  
Дата: 06.03.14 20:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>мастер я не менял, поэтому конфликтов нет.

А>Но как из этого мастера подтянуть обновления в somebug-fix
А>мержить мастер в багфикс?

Да, я писал — git fetch upstream && git merge upstream/master

А>Или

А>git checkout somebug-fix
А>git pull
А>тоже подойдет?

Нет.

А>Мне попались другие. Сами просят пулреквестить в мастер и две стабильные ветки.


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

А>Основная проблема, пока, в том, что после нескольких пуллов из апстрима и пушей в свой форк я вдруг вижу в своем пулреквесте чужие файлы.

А>Каким то образом они перекочевывают через серию pull-push?

Возьмите графическую оболочку вроде git extensions и посмотрите внимательно на дерево веток. Для начала, пока не разберетесь в чем дело, делайте не pull/rebase, а fetch & merge.

А>Пока отбиваюсь git rebase и новый пуш через форсе. После этого чужие файлы пропадают.


Это вы какой-то нехороший фокус делаете.

А>И еще неясно, зачем мне удаленный форк, если я в нем ничего не меняю?


Как не меняете? А пулл реквест вы откуда делать будете?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.