Шпаргалка по роботі з Git
Приклади git команд з невеликим описом для повсякденного вжитку для програмістів і не тільки.
Створити новий репозиторій:
git init project-name
Якщо ви плануєте клонувати його по ssh з віддаленої машини, також скажіть:
git config --bool core.bare true
… інакше при git push ви будете отримувати дивні помилки на кшталт:
Refusing to update checked out branch: refs / heads / master By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent with what you pushed, and will require 'git reset - -hard 'to match the work tree to HEAD.
Клонувати репозиторій з віддаленої машини:
git clone git @ bitbucket.org:afiskon / hs-textgen.git
Якщо хочемо пушіть один код в кілька репозиторіїв:
git remote add remotename git @ gitlab.example.ru:repo.git
Додати файл в репозиторій:
git add text.txt
Видалити файл:
git rm text.txt
Поточний стан сховища (зміни, невирішені конфлікти і тп):
git status
Зробити Комміт:
git commit -a -m "Commit description"
Зробити Комміт, ввівши його опис за допомогою $ EDITOR:
git commit -a
Замержіть все гілки локального сховища на віддалений репозиторій (аналогічно замість origin
можна вказати і remotename
, см вище):
git push origin
Аналогічно до попереднього, але робиться пуш тільки гілки master
:
git push origin master
Запущено поточну гілку , не вводячи цілком її назва:
git push origin HEAD
Замержіть все гілки з віддаленого сховища:
git pull origin
Аналогічно до попереднього, але накочується тільки гілка master:
git pull origin master
Хильнути поточну гілку, не вводячи її довге ім’я:
git pull origin HEAD
Завантажити все гілки з origin, але не Мержа їх в локальний репозиторій:
git fetch origin
Аналогічно до попереднього, але тільки для однієї заданої гілки:
git fetch origin master
Почати працювати з гілкою some_branch (вже існуючої):
git checkout -b some_branch origin / some_branch
Створити новий бранч (відгалузилося від поточного):
git branch some_branch
Переключитися на іншу гілку (з тих, з якими вже працюємо):
git checkout some_branch
Отримуємо список гілок, з якими працюємо:
git branch # зірочкою відзначена поточна гілка
Переглянути всі існуючі гілки:
git branch -a # | grep something
Замержіть some_branch в поточну гілку:
git merge some_branch
Видалити бранч (після Мержа):
git branch -d some_branch
Просто видалити бранч (тупикова гілка):
git branch -D some_branch
Історія змін:
git log
Історія змін в зворотному порядку:
git log --reverse
Історія конкретного файлу:
git log file.txt
Аналогічно до попереднього, але з переглядом зроблених змін:
git log -p file.txt
Історія з іменами файлів і псевдографічним зображенням бранчів:
git log --stat --graph
Зміни, зроблені в заданому Ком:
git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
Подивитися, ким востаннє правилася кожен рядок файлу:
git blame file.txt
Видалити бранч зі сховищ на сервері:
git push origin: branch-name
Відкотитися до конкретного коммітов (хеш дивимося в «git log»):
git reset --hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
Аналогічно до попереднього, але файли на диску залишаються без змін:
git reset --soft d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
Спробувати звернути заданий commit (але частіше використовується branch / reset + merge):
git revert d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
Перегляд змін (сумарних, а не всіх по черзі, як в «git log»):
git diff # подробиці див в "git diff --help"
Використовуємо vimdiff як програми для вирішення конфліктів (mergetool) за замовчуванням:
git config --global merge.tool vimdiff
Відключаємо діалог «який mergetool ви хотіли б використовувати»:
git config --global mergetool.prompt false
Відображаємо таби як 4 пробілу, наприклад, в «git diff»:
git config --global core.pager 'less -x4'
Створення глобального файлу .gitignore :
git config --global core.excludesfile ~ / .gitignore_global
Вирішення конфліктів (коли оні виникають в результаті Мержа):
git mergetool
Створення тега:
git tag some_tag # за тегом можна вказати хеш коммітов
Видалення untracked files:
git clean -f
«Упаковка» сховища для збільшення швидкості роботи з ним:
git gc
Іноді потрібно створити копію сховища або перенести його з однієї машини на іншу. Це робиться приблизно так:
mkdir -p / tmp / git-copy cd / tmp / git-copy git clone --bare git @ example.com:afiskon / cpp-opengl-tutorial1.git cd cpp-opengl-tutorial1.git git push --mirror git @ example.com:afiskon / cpp-opengl-tutorial2.git
Слід зазначити, що Git дозволяє використовувати коротку запис хеш. Замість «d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4» можна писати «d8578edf» або навіть «d857».