Ответы пользователя по тегу Git
  • Как вы осуществляете commit в git?

    denver
    @denver
    Я наверное еще не владею гит-кунфу в полной мере, но когда я с git blame ищу кто изменил что-то в некой строке, то я рано сдаюсь когда приходится делать нечто вроде git blame -w abcdef~2^2. А еще порой мне не нужно знать что эта строка преображалась несколько раз во время одного целостного рефакторинга.

    Предпочитаю первый подход, и соответственно линейную историю. Имхо семь раз отмерь, один — сквош-смердж.
    Ответ написан
    Комментировать
  • Партизанский git pull в условиях «unable to unlink old file»?

    denver
    @denver
    Ясно. Имхо главная проблема в желании иметь .git/ в продакшн проекте. Это всё равно ущербно — ни один девелопер не должен думать что это нормально делать git pull там. Вполне логично было бы держать репу у себя в /home/ а затем рсинкать её когда полностью протестировал текущую ветвь. Или настроить capifony если это частая задача.
    Ответ написан
  • Игнорирование в Git содержимого папки, но не самой папки?

    denver
    @denver
    .gitignore может быть абсолютно пустым, будут игнориться все файлы кроме .gitignore.

    Другого способа добавить папку в git нет и не будет — git не хранит файлы/папки, а хранит диффы файлов, для этого нужны файлы.

    Если нужны абсолютно пустые папки — заведите install.sh (либо используйте phing как на взрослом проекте), разумеется .gitignore в корне проекта должен содержать список всех пустых папок. Всё равно найдется что еще сделать — выставить пермишны, залить базу…
    Ответ написан
    2 комментария
  • Как вы используете git в веб проектах?

    denver
    @denver
    Thekondr сказал что сам умеет. Можно начать с git-flow а дальше самому учиться мерджить/тэгать если угодно. А про .git на продакшне — лучше бы без (хотя .git/ в некоторых фреймворках (Symfony) не будет лежать в корне сайта), впрочем на любителя, главное чтобы обновление делал скрипт а не человек.
    Ответ написан
    Комментировать
  • Diff между локальным и удаленным репозиторием git?

    denver
    @denver
    git config --global alias.in '!git remote update -p; git log ..@{u}'
    git config --global alias.out 'log @{u}..'

    будут комманды git in (что придет), git out (что пушнется)
    Ответ написан
    1 комментарий
  • Git - одна проблемка

    denver
    @denver
    Действительно мне не нужно чтобы в центральный репозиторий копировались исходники каждый раз

    При желании пушать можно и не в баре-репу. Баре от не-баре отличается наличием *локальной бранчи* master (копии origin/master в какой-то момент). Пуш в любую удаленную (remote) репу делается в её origin/master, а чтобы еще обновились ее локальные файлы («исходники» они же working copy) надо еще зайти и обновить локальную master (например git fetch && git reset --hard origin/master, при такой комманде еще отменятся все локальные правки, но вам, от «центральной репы» с которой никто никогла не пушает, это и требуется). Как сделать чтобы это обновление происходило автоматом — зависит, но вам можно и вручную (или по крону) это делать периодически.
    Ответ написан
    1 комментарий
  • Командная разработка, php, git, redmine, sandbox

    denver
    @denver
    Используем phing (для установки после чекаута, запуска тестов), Jenkins для покоммитного чекаута (плагинов куча) и запуска phing install test и отправки фэйла письмом (всем или себе, зависит). Конфигураций (тестсайтов) в дженкинсе может быть сколько угодно, чтобы отправлять на определенный я думаю нужно чтобы вы пушали в разные удаленные репы (для тестов) и в единый центральный (после тестов), на котором тоже может запускаться свой jenkins.

    Автоматически после своих тестов пушать в центральный — уже имхо утопия (кто-то знает решение? как минимум будет куча лишних merge коммитов, и порой конфликты)
    Ответ написан
    1 комментарий
  • Как не коммитить изменения прав на файлы?

    denver
    @denver
    git config core.filemode false
    Ответ написан
    Комментировать
  • Статус локального репо в git

    denver
    @denver
    Чтобы узнать что еще не запушено (для ветки develop):
    git log origin/develop..
    

    Чтобы узнать все что еще не запушано во всех ветках:
    git log --branches --decorate --not --remotes=origin
    # или поменьше воды, побольше инфы:
    # git log --branches --decorate --not --remotes=origin --name-status --oneline
    

    Чтобы узнать что еще не скачано (для ветки develop):
    git fetch
    git log ..origin/develop
    # или поменьше воды, побольше инфы:
    # git log ..origin/develop --name-status --oneline
    

    Для простоты можно создать себе алиасы git in / git out:
    git config --global alias.in '!git remote update -p; git log ..@{u}'
    git config --global alias.out 'log @{u}..'
    

    @{u} — (только в git 1.7+) переменная ссылающаяся на удаленную ветку для текущей ветки
    Ответ написан
    Комментировать