Как добавить изменения ветки master в свою ветку, не потеряв изменения в последней?
Всем привет и спасибо, что обратили внимание на мой вопрос!
С GITом знаком очень мало, пока только совсем базу знаю, поэтому извините за нубские вопросы.
Выделили мне ветку отдельную на удаленном репо, назовем ее test.
Скачал я себе проект, потом ветку test.
Внес я туда кучу правок, закоммитил их, запушил на удаленную ветку test.
Запросил у постановщика слияние master'a и своего test'a, на что мне ответили: "Мы пилим новую фичу. Завтра обновим master'а этой фичей. Смержите в свою ветку эту фичу, проверьте, чтобы не было конфликтов и снова отправляйте в удаленный test."
Вопрос, собственно, как правильно эту новую фичу влить в свою ветку, чтобы не потерять свои правки? Из мастера сделать merge в test?
Опционально делаете fetch: git fetch
Затем выполняете слияние: git merge origin/feature-branch-name
Если есть конфликты резолвите удобным способом и коммитите: git commit -a
Затем отправляете изменения в свою удаленную ветку: git push
Спасибо за ответ, единственное, чего мне не хватало, но выяснилось опытным путем, что для того, чтобы в свою локальную версию ветки test стащить изменения из обновленного мастера, нужно было мержить master из своей ветки
git pull
git checkout test
git merge master
git add .
git commit -m 'fixed after merge'
git push
Фичей как правило называют отдельную ветку, которая по методике GitFlow размещается в "папке" с названием "feature/*". Но в вашем случае это может быть что угодно :)
Сливаете обыкновенно, ветку фичи в свою ветку, разруливаете конфликты, если они есть, и делаете коммит.
Если даже вы испортили слиянием что-то в своей ветке, вы сможете срезать этот коммит.
Сделайте копию своей ветки и в ней пробуйте, чтобы не испортить. Вы всегда точно должны понимать, что вы делаете и зачем.
Спасибо, последовал вашему совету (по поводу копии).
Насчет фичи тут я, наверное, просто неправильно выразился. Фичу уже влили в мастера и опубликовали, а я на локале работаю со своей веткой test.
Мастера мне нельзя трогать.
Решил ситуацию просто стащив мастера, смержив свою ветку с мастером (или наоборот), решив конфликты и отправив все на удаленку.
Начинал из-под мастера:
git pull
git checkout test
git merge master
git add .
git commit -m 'fixed after merge'
git push