Category Archives: контроль версий
Как смигрировать репозиторий в новый remote
git.migrate:
Поиск в git по изменённому контенту
1 |
git log -S<your_word_with_no_space> |
Например — git log -SaddedVariableName
Git-subtree для деплоя сайта на github-pages
Возьмём для примера проект https://github.com/bullgare/lzd_cllinics. Сборка для деплоя расположена в директории deploy/, и эта директория находится под контролем версий. Чтобы статический сайт был доступен по адресу http://bullgare.github.io/lzd_cllinics/, нужно содержимое этой директории запушить в отдельную ветку gh-pages. Проще всего сделать это так:
1 |
git subtree push --prefix deploy origin gh-pages |
Эта команда сделает push закоммиченной директории deployв ветку gh-pages, что нам и нужно. …
Git: несколько разных ключей для одного хоста на примере bitbucket.org
Всё очень просто, достаточно прописать в ssh-конфиге алиасы:
1 2 3 4 5 6 |
Host work-bitbucket.org HostName bitbucket.org IdentityFile ~/.ssh/workid Host personal-bitbucket.org HostName bitbucket.org IdentityFile ~/.ssh/personalid |
И затем поправить путь к репозиторию гита:
1 |
git remote set-url origin git@work-bitbucket.org:repo_name.git |
https://confluence.atlassian.com/bitbucket/configure-multiple-ssh-identities-for-gitbash-mac-osx-linux-271943168.html
Настройка гита для пулла из одного репозитория и пуша в другой
Можно настроить два разных remote, как описано здесь — https://blog.thebolgov.com/2014/11/gitlab-flow/. Но если нужно исключительно делать fetch из одного репозитория, а push — только во второй, то лучше сделать так:
1 2 3 4 |
# fetch repo git remote set-url origin git@bitbucket.org:repo1.git # push repo git remote set-url origin --push git@bitbucket.org:repo1.git |
Посмотреть текущие параметры репозиториев можно так:
1 |
git remote -v |
Обсуждение — http://stackoverflow.com/a/3195446/801426
Github Flow
По сравнению с git flow всё проще. Создаётся fork, разработка фичи ведётся в отдельной ветке. Потом создаётся pull request (merge request для gitlab), опционально назначаются ответственные за merge, в процессе обсуждений может продолжаться работа в ветке (изменения будут автоматически добавлены к request). После одобрения ветка мёржится в мастер/главную ветку https://guides.github.com/introduction/flow/index.html
Github: подготовка к pull-request
https://help.github.com/articles/fork-a-repo — как создать fork. Тут всё просто — в дополнение к очевидным вещам нужно добавить ещё один источник:
1 |
git remote add upstream https://github.com/octocat/..... |
https://help.github.com/articles/syncing-a-fork — как продолжать обновлять из оригинального репозитория. Тут всё тоже не очень сложно:
1 2 3 |
git fetch upstream git checkout master git merge upstream/master |
Если ветка уже создана, то
1 2 |
git checkout <ветка> git rebase master |
Чтобы поменять (если нужно) url до origin:
1 |
git remote set-url origin git://new.url.here |
https://blog.thebolgov.com/2014/04/git-%D0%BF%D0%B5%D1%80%D0%B5%D0%BB%D0%B8%D1%82%D1%8C-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%BF%D0%BE%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9-%D0%B2-%D0%BD%D0%BE%D0%B2/
Git reset
Все виды команды git reset. Удалить всё лишнее, включая незакоммиченные изменения
1 2 |
# Clear working directory tree from all changes $ git checkout -f HEAD |
Откатить последний коммит и вернуть файлы в незакоммченное состояние (т.е. изменения станут незакоммиченными, но готовыми для коммита)
1 2 |
# Reset the latest commit, and leave the changes in the index $ git reset --soft HEAD^ |
Откатить последний коммит и убрать файлы из гита (т.е. нужно будет сначала сделать git add .)
1 2 |
# Reset the latest commit, and leave the changes in the working directory $ git reset HEAD^ |
…
Git: Перелить локальный репозиторий в новый удалённый (remote)
1 |
git remote set-url origin git://new.url.here |
http://stackoverflow.com/questions/2432764/change-the-uri-url-for-a-remote-git-repository
1 2 3 |
git remote remove origin git remote add origin <repo_url> git push origin --all // git push --follow-tags |
http://stackoverflow.com/questions/6865302/push-local-git-repo-to-new-remote-including-all-branches-and-tags
Написал Grunt-таск для бэкапа wordpress в репозиторий
Идея — делать бэкапы кода и базы в репозиторий на bitbucket. Запуск через крон. Сам код (если кому интересно) опубликую попозже. А вот полезные ссылки: https://npmjs.org/package/grunt-git (чтобы склонировать проект) https://npmjs.org/package/grunt-contrib-copy (для копирования кода) https://npmjs.org/package/grunt-file-process (для распарсивания конфига, чтобы узнать настройки доступа к базе) https://npmjs.org/package/grunt-mysql-dump (хотел дампить базу, но не взлетело) https://npmjs.org/package/grunt-shell (для дампа базы, для …