Шпаргалка git
Скопировать уже существующий с github
Создать копию репозитория на новой машине: Из каталога, выше, чем репозиторий:
$ git clone git@github.com:swasher/kinobox.git
Это создаст каталог kinobox и в нем полностью рабочий проект. Чтобы клонировать в отличный от kinobox каталог:
$ git clone git@github.com:swasher/kinobox.git moviebox
Создать с нуля новый репозиторий из проекта в текущей директории:
Сначала создаем репозиторий на github - назовем example. Чтобы не вводить логин-пароль, настраиваем доступ по ssh (см. ниже). Затем в нашей директории выполняем:
git init
git add <files>
git commit -m "first commit"
git remote add origin https://github.com/<user>/<example>.git
git push -u origin master
Добавить файл в версионный контроль
$ git add <filename>
$ git add <dirname> - добавит рекурсивно
Удалить файл из контроля:
$ git rm --cached <filename>
Удалить файл из контроля и сам файл:
$ git rm --force <filename>
Для игнорирование определенных файлов добавляем шаблоны в exclude http://help.github.com/ignore-files/ После добавления в exclude файлы не удалятся сами из соммита, их надо удалить вручную:
$ git rm --force <filename>
Коммит подготавливает данные для выполнения push
$ git commit -a -m "Комментарий"
Затем заливка на удаленный сервер origin
в ветку master
$ git push origin master
Или просто
$ git push
Просто git push
может ругаться как то так:
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
<сокращено>
Это говорит о том, что у нас не указано в явном виде, в какую ветку заливать. Подробно описано тут prgmr.io Уставновим simple - это значит, push произойдет в текущую ветку, если ее не существует, она будет создана.
$ git config --global push.default simple
Даунлоад изменений(pull)
$ git pull
Чтобы посмотреть, какие удаленные репозитории настроены:
$ git remote -v
origin git@github.com:swasher/kinobox.git (fetch)
origin git@github.com:swasher/kinobox.git (push)
Инспекция удаленного репозитория
$ git remote show origin
Добавление удаленных репозиториев: Чтобы добавить новый удалённый Git-репозиторий под именем-сокращением, к которому будет проще обращаться, выполните git remote add [сокращение] [url]:
$ git remote add origin git@github.com:swasher/kinobox.git
Как внести коммит в чужой репозиторий
- делаем форк
- скачиваем свой форк - git clone ...
-
делаем в своем форке новую ветку, например feature:
# git checkout -b feature Switched to a new branch 'feature'
-
вносим изменения
-
делаем коммит
# git commit -a -m "fix something"
-
отправляем изменения на github в свой форк
# git push origin feature
SSH ключи
ВНИМАНИЕ! Для того, чтобы при использовании ключа не запрашивался логин/пароль, нужно обращаться к удаленному репозилорию по shh, а не по https. Для примера, это адрес https
https://github.com/<Username>/<Project>.git
, а это sshgit@github.com:<Username>/<Project>.git
Статья Github по ключам. Тезисно:
$ ssh-keygen -t rsa -C "your_email@example.com"
$ clip < ~/.ssh/id_rsa.pub
На Github: Accout setting -> SSH Keys -> add -> paste -> Add key Проверяем:
$ ssh -T git@github.com
Далее, нужно настроить url для использования доступа по ssh. Обычно они выглядят так
$ git remote -v
origin https://github.com/<user>/<repo>.git (fetch)
origin https://github.com/<user>/<repo>.git (push)
Нужно воспользоваться командой set-url
$ git remote set-url origin git@github.com:<user>/<repo>.git
Смотрим, что изменилось
$ git remote -v
origin git@github.com:<user>/<repo>.git (fetch)
origin git@github.com:<user>/<repo>.git (push)
Теперь команды типа push не будут запрашивать логин-пароль.
Другое
Предупреждение
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'.
Объяснение на stackoverflow
Comments !