Mon 02 April 2012 Category: IT. Tags: git

Шпаргалка 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, а это ssh git@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 !

blogroll

social