hirthwork
31.01.2013 15:46 mcabber
Вопрос евангелистам git'а про бранчи-хуянчи.
Вот работаю я в мастере. Изменил файлы A и B, и тут потребовалось срочно в
мастере же изменить быстро файл C и запушить, чтобы коллега эти изменения
подхватил. При этом:
Файл A — на сборку не влияет, при работе над файлом C мне потребуются изменения
в нём.
Файл B — ещё не закончен и сборку ломает.
Как мне грамотнее всего тут вынести изменения в B в отдельный бранч, а потом
этот бранч вмержить обратно в мастер?
Никак, блядь. Все на это наступали. Осиливай git-flow.
изменения в A и B ты ужа закоммитил в мастер?
нет и пока не собираюсь
тогда я не понимат в чём проблема: git add A C && git commit && git push
% man git-glow
Нет справочной страницы для git-glow
Зачем в отдельную ветку? Учитывая, что ты ничего ещё не коммитил, тебе достаточно сделать git stash, поправить и закоммитить C, а потом git stash pop и хакаешь себе дальше.
закинуть в stash, перейти на другой мастер, git stash apply etc
*на другой бранч
в том что сборка в данный момент поломана
так подожди, A у тебя сборку не ломает же
Изменения из B никуда не делись же, @hirthwork игнорирует комментарии про git stash.
а то что при git commit не обязательно указывать -a уже все забыли? или чо?
Ну, я так понимаю, он про локальную сборку, прямо из рабочей директории.
я нихуя не понял™
stash?
Ну ок, погоди немного, сейчас придёт топикстартер и объяснит, какую именно сборку ломает B — у него на девелоперской машине или на билд-сервере.
заебали. пойду почитаю про это
любую сборку ломает. но собираю и тесчу я локально
ну так и не коммить его, блять
Не. Он у себя собрать не может, чтобы проверить изменения, которые закоммитить хочет.
а, понял. Тогда stash, да
Элементарно, ватсон:
proj-clone master-hotfix master
cd master-hotfix
...
git commit -am $'всё сделал'
git push
И нехуй в одном и том же клоне ебаться с полками и прочим. И наглядно видно над чем работаешь тупо сделав
ls -ltr
в папке с проектами.
> И нехуй в одном и том же клоне ебаться с полками и прочим.
А как ты относишься к darcs?
еще не смотрел, но знаю что тормозит. а что, думаешь стоит глянуть?
А ты случайно не на питоне пишешь, братюнь?
Теперь подробнее про команду proj-clone. Это специфичный для проекта скриптик (пишется, в основном, единоразово, очень изредка допиливается), который делает следующее:
cd эталонный_репозиторий_проекта # (для того, чтоб клонировать его, чтоб локально, быстро и с хардлинками)
git pull
cd ..
git clone ./эталонный_репозиторий_проекта $1
cp эталонный_репозиторий_проекта/.git/config $1/.git/
cd $1
git checkout origin/$2
git checkout $2
cowsay $'done!'
А что не так?
Там просто нет веток и их приходится делать клонированием всего репозитория в отдельную директорию. Мне твой совет про отдельный клон почему-то сразу про этот небольшой недостаток напомнил.
Сам я им почти не пользовался, так, потыкал и бросил. Практической нужды нет, а если захочется теории, то лучше уж теорию патчей раскурить для начала.
Ужас. Нет, я считаю, что ветки нужны, но пляска с стэшами и прочим говном это какой-то цирк. У меня красиво лежат папки proj-master, proj-12.0, proj-13.0 для веток, proj-1234-feature-foo, proj-4321-feature-bar для фич и так далее. Мне гораздо больше такой воркфлоу подходит.
Тред не читал,
stash тебе нужен.