Рабочие записки по работе с git в ubuntu и github



Рабочая обстановка:
Ubuntu 10.04, github.com

1. Установка

$ sudo apt-get install git-core git-gui git-doc


или через центр приложений

2. Генерим ключ и устанавливаем данные для нашего репозитория, чтобы была видна принадлежность коммитов

$ ssh-keygen -t rsa -C "your_email@youremail.com"

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@youremail.com"

3. Подключаемся по ssh к удаленному репозиторию

$ ssh -T git@github.com


4. Инициализируем git в нашей рабочей директории

$ git init


5. Клонируем удаленный репо в нашу рабочую директорию

$ git clone git@github.com:username/Spoon-Knife.git


Смотрим полное имя удаленного репо origin git@github.com:username/Spoon-Knife.git)
$ git remote -v


Статус
$ git status


6. Основное по работе локально

Отменить локальные изменения
$ git checkout .


Добавить в индекс
$ git add .


Удалить из индекса
$ git reset HEAD^


Сделать коммит-подтверждение
$ git commit -m "comments.."


Обратить коммит (повляется новый коммит, обратить коммит за счет появления нового)
$ git revert HEAD
^

Сбросить коммить на коммитс кэшем
$ git reset --hard b05a808


Что за ключ --amend?
$ git commit --amend -m "Add an author/email comment"


Создать ветку и перейти на нее
$ git checkout -b <namebranch>


Перейти на ветку
$ git checkout <namebranch to switch>


Слить в текущую ветку master-ветку например
$ git merge master


Ключ -а вместо команд add+commit
$ git commit -a


Создать ветку
$ git branch <namebranch>


Переименовать ветку
$ git branch -m new-branch-name old-branch-name


Удалить ветку
$ git branch -d <namebranch> (удалить)


6. Основное по работе с удаленным репо

Посмотрим на удаленные репо
$ git remote -v


Создать удаленную ветвь
git push origin origin:refs/heads/new_branch


Создаем локальную ветку, и закрепляем ее за удаленной:
git checkout --track -b new_branch origin/new_branch

(если вдруг создали, но забыли прикрепить к удаленной, то лезем в конфиг гита и смотрим на примере master'a)

Удалить ветку на удаленном репо
$ git push origin :<old-branch-name>
$ git push --delete <nameofdelete branch>


Показать все ветки, в том числе удаленные
$ git branch -a


Принять получить данные с удаленного репо
$ git fetch <удаленный репо> <удаленная ветвь>


Слить данные с удаленного репо из ветви <pigmalion-test> в текущую
$ git pull origin <pigmalion-test> (pull с удаленный репо)


Тянуть-получить
толкать-отдать
Слить-объеденить

$git pull
$git push
$git merge

7.Вместо git log, применяем алиасы команд

$git hist


Для конфига

[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p


Спасибо Марине:
http://githowto.com/

p.s
Галкин хвастался, что к ним гуру git'a приезжал из Киева специально, чтобы рассказать, как им правильно пользоваться. Когда накушается парижских лягушек и напьется французских яблок, было бы неплохо услышать его комментарии по использванию git'a.


upd 03-07-2012:

Частый вопрос при разработке на различных ОС связанный с «CRLF» — переносы строк в *nix и win.

Для «чистого» pull'a, который автоматом решит проблему различных переносов строк необходимо:

git config --global core.safecrlf true


Но при этом возникает ошибка, когда мы пытаемся сделать push (add ., commit, commit -a)
Дабы не заморачиваться делаем соответственно:

git config --global core.safecrlf false


Хороший инструмент для с'merge'ивания — kdiff3. Есть в стандартном репозитории ubuntu. (есть в синаптике) Можно запустить через консоль посмотреть как вылядит — kdiff3.

В реальных условиях, когда git просит:

CONFLICT (content): Merge conflict in <your file>
Automatic merge failed; fix conflicts and then commit the result.


вводим

git mergetool


Перед вводом этой строки необходимо в конфиге гита добавить:

[merge]
        tool = kdiff3


После набора команды использовать инструмент для мерджа, эта умная зараза может и сама разобраться в коде, в противном случае появятся окна для просмотра и редактирования в очередности несмердженых файлов, которые выдал git.

Комментарии (2)

RSS свернуть / развернуть
+
+2
1. Мы вопрос перевода строк рассмотрели до начала работы, с настройкой
git config --global core.autocrlf true
за полгода не увидели ни одной ошибки (вынь + бунта)
2. Галкин не хвастался
3. jenyay.net/Git/Autocrlf
avatar

halkin

  • 3 июля 2012, 16:06
+
0
нормальный подходк к коммандной разработке)
но Давидище всеравно молодца, 5 баллов
avatar

miha

  • 3 июля 2012, 18:06

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Не забываем смотреть статистику:

Яндекс цитирования