Git – это распределенная система контроля версий. Это главное отличие git от svn. Каждый разработчик создает на своем компьютере отдельный, полноценный репозиторий.
| git config --global user.name 'Alexander' | создаем глобального пользователя |
| git config --global user.email est @mail.ru | создаем email глобального пользователя |
| git init | создать репозеторий |
| git status | получаем статус изменений |
| git add (-a добавит в индекс все файлы | или название файла) | добавить файл для отслеживания |
| git diff | просморт неидексированных изменений |
| git diff --cached | просморт идексированных изменений |
| git commit -m "name commit" | коммит |
| git commit -a -m "name commit" | комиит с автоматическим добавление в индекс отклеживаемых файлов |
| git rm "name commit" | удаление файлов (из индекса, коммит) |
| git rm --cached readme.txt | удалить файл из индекса |
| git mv file_from file_to | перемещение/переименование файла |
| git clone git://github.com/schacon/simplegit-progit.git | копирование репозитория |
| git log | список комитов |
| git log --pretty=oneline | список коммитов (в 1 строку параметры) |
| git log -p -2 | последние 2 коммита с дельтой разница(-p) |
| git log --abbrev-commit --pretty=oneline | показывает коммит с кратким хешем --abbrev-commit |
| $ git log --pretty=format:"%h - %an, %ar : %s" | список коммитов в строку (вывод по шаблону) |
| git log master..experiment | все коммиты experiment которых нет в master |
| git log origin/master..HEAD | все коммиты в текущей ветке, которых нет в ветке master на сервере origin |
| git reset HEAD benchmarks.rb | отмена последнего действия с файлом (удаление файла из индекса) |
| git commit --amend | добавляет в последний коммит изменения (проиндексированыые) |
| git checkout -- benchmarks.rb | отмена изменений в файле (возврат к состоянию предидущего коммита) |
| cd | переход в директорию |
| mkdir | создание деректории |
| touch | создание файла |
| git remote show origin | посмотреть инфу о удаленном репозитории origin |
| git remote -v | просмотр удаленных репозеториев |
| git remote add pb git://github.com/paulboone/ticgit.git | Добавить удаленный репозиторий |
|
git remote add dv ssh://user@domen.ru:22/data/sites/site.ru где: user - пользователь domen.ru - сервер 22 - порт /data/sites/site.ru - папка сайта Для разрешения доступа push/pull git config receive.denyCurrentBranch ignore |
Добавить удаленный репозиторий (подключаемся по ssh) |
| git remote rename pb paul | переименование удаленного репозитория |
| git remote rm paul | удаление удаленного репозитория |
| git fetch pb | получить свежие данные с репозитория pb |
| git pull pb | получить свежие данные с репозитория pb + пытается слить ветки |
| git push origin master | поделить данными с репозеторием origin ветка master |
| git tag | список меток |
| git tag -a v1.4 -m 'my version 1.4' | добавить аннотированную метку |
| git tag v1.4-lw | добавить легковесную ветку (уменьшенная инфа) |
| git tag -a v1.2 -m 'version 1.2' 9fceb02 | добавление метки к коммиту |
| git show v1.4 | посмотреть данные метки, изменения в коммите |
| git show master@{yesterday} | где верхушка ветки находилась вчера |
| git push origin v1.5 | отправить метку в удаленный репозиторий |
| git push origin --tags | отправить все метки в удаленный репозиторий |
| git branch testing | создать ветку |
| git branch testing test | создать ветку testing на основе ветки test |
| git checkout -b iss53 | создать ветку и сразу перейти на нее |
| git checkout -b iss53 test | создать ветку iss53 (и сразу перейти на нее) на основе test |
| git checkout -b rubyclient jessica/ruby-c | создать ветку rubyclient на основе ветки ruby-c удаленного репозитория jessasica |
| git checkout testing | перейти в ветку |
| git merge hotfix | обьединение веток |
| git branch -d hotfix | удаление слитой ветки |
| git branch -D hotfix | удаление ветки (не слитой, принудительно) |
| git branch | список веток |
| git branch -v | список веток с последним коммитом |
| git branch --merged | список веток слитых с текущей |
| git branch --no-merged | список веток не слитых с текущей |
| git push origin :serverfix | удалить ветку на удаленном сервере |
| git push origin featureB:featureBee | отправить локульную ветку featureB в удаленную ветку featureBee |
| git checkout experiment git rebase master | перемещение коммита из одной ветки в другую |
| git checkout origin/branch | переключиться на удаленную ветку |
| git checkout --track origin/branch | переключиться на удаленную ветку и создать локальную для отслеживания |
| git rebase --onto master server client | “переключиться на ветку client, взять изменения от общего предка веток client и server и повторить их на master”. |
| git rebase master server git checkout master git merge server | перемещение ветки server на ветку master без предварительного переключения на эту ветку при помощи команды. выполнить перемотку основной ветки (master) |
| git push --force | переписать изменения на сервере |
| ssh-keygen | генерировтаь открытый ключ |
| cd ~/.ssh ls | посмотреть наличие ssh ключа: .pub - открытый ключ, id_dsa или id_rsa - секретный |
| cat ~/.ssh/id_rsa.pub | посмотреть открытый ключ |
| git checkout -b featureBv2 origin/master git merge --no-commit --squash featureB | Опция --squash берёт всю работу на сливаемой ветке (featureB) и сжимает её в один коммит, не являющийся коммитом-слиянием, и помещает его на верхушку текущей ветки. Опция --no-commit сообщает Git'у, что не нужно автоматически записывать коммит. Это позволит вам внести все изменения с другой ветки и затем сделать ещё ряд изменений перед записью нового коммита. |
| git format-patch -M origin/master | Команда format-patch создаёт файлы с патчами и выводит их названия. Опция -M сообщает Git'у о необходимости отслеживания переименований файлов. |
| git diff master | получить разницу слияния текущей ветки с master |
| git archive master --prefix='project/' | gzip > `git describe master`.tar.gz | создать tar архив слепка ветки |
| git archive master --prefix='project/' --format=zip > `git describe master`.zip | создать zip архив слепка ветки |
| git shortlog | краткая сводка изменений |
| git checkout -- 4a2f59a32bd1074c42 name_of_file | возврат состояния файла к нужному коммиту |
| git reset --hard 4a2f59a32bd1074c42 | возврат всех изменений к нужному коммиту |
| git log -p feedback_form...origin/feedback_form | посмотреть изменения между локальной веткой и удаленной |
| git merge origin/feedback_form | слить локальную ветку с удаленной |
| git push -u origin feedback_form | отправить ветку на удаленный сервер и отслеживать изменения |
| git config --global alias.st "status" | создать алиас для команды |
| git stash - копилка изменений | |
| git stash save 'NAME' | сохранить измененные файлы в копилку |
| git stash list | показать что содержится в копилке |
| git stash show shash@{0} | показать список файлов спрятанных в патч копилки |
| git stash show -p shash@{0} | показать список файлов спрятанных в патч копилки |
| git stash apply | взять все из копилки и положить в рабочую директорию гита (в текущую ветку) |
| git stash pop | взять все из копилки и положить в рабочую директорию гита (в текущую ветку) и удалить из копилки |
| git stash pop stash@{0} | взять патч 0 из копилки |
| git stash drop stash@{0} | удалить патч 0 из копилки |
| git stash clear | удаляет все из копилки |