Шпаргалка по командам git

Тут набір основних команд для роботи з git

Створення локального сховища

Створення сховища в папці де виконується команда
$ Git init

Створення сховища в зазначеному каталозі
$ Git init

Створення сховища Git для спільної роботи

$ Git init -bare -share sharedproject.git

Дана команда створює каталог з ім'ям sharedproject.git c правами на запис в нього. Детальніше тут.

Клонування віддаленого сховища в локальний

Клонування локального сховища на віддалений

Якщо у вас вже є локальний репозиторій Git і ви хочете його викласти в загальний доступ, то спершу вам треба створити віддалений репозиторій (наприклад на GitHub), а потім дати команди представлені нижче, змінивши соотвественно частина з назвою вашого сховища.

2. верифікуємо що віддалений репозиторій пов'язаний з нашим
$ Git remote -v

3. Публікуємо гілку master на віддаленому репозиторії
$ Git push -u origin master

Більш докладно можна почитати тут.

Задаємо ім'я користувача і електронну пошту

Глобально для всіх проектів поточного користувача
$ Git config -global user.name «John Doe»
$ Git config -global user.email [email protected]

Для конкретного проекту (ці настройки перевизначити глобальні)
$ Git config -local user.name «John Doe»
$ Git config -local user.email [email protected]

Всіх (глобальних, системних і локальних). Деякі параметри можуть з'явиться в списку кілька разів, так як Новомосковскются з трьох файлів налаштувань. Детальніше тут.
$ Git config -list

Локальних для певного проекту
$ Git config -local -list

системних
$ Git config -system -list

Отримання довідки (допомоги) по команді Git

$ Git help
$ git -help

Наприклад виведемо довідку по команді config (відкриється браузер з довідкою)
$ Git help config

Налаштування українських шрифтів (cp1251) в Git

Налаштовуємо правильне відображення файлів з українськими назвами в командах Git
$ Git config -local core.quotepath false

Налаштовуємо кодіровкуWindows cp1251для коммітов в Git
$ Git config -local core.pager «iconv.exe -f cp1251 -t utf-8 | less »
$ Git config -local i18n.commitEncoding utf8
$ Git config -local i18n.logoutputencoding cp1251

Ці команди чудово працюють в msysgit 1.9.5. Як буде в інших версія не знаю. Але сподіваюся, що в новіших теж буде працювати. Більш докладно про налаштування української мови в Git можна почитати тут. Так само вони правильно працюють при установці Git з пакетів Cygwin, докладніше можна почитати тут.

Так само можна задати кодову сторінку для файлів проекту командою
$ Git config -local i18n.filesEncoding windows-1251

ну або просто рядком в розділі [i18n]
filesEncoding = windows-1251

А взагалі краще вести проекти в кодуванні UTF-8, якщо це можливо звичайно.

Основний інструмент, який використовується для визначення, які файли в якому стані знаходяться - це команда:
$ Git status

І її більш короткий висновок:
$ Git status -s

Більш детально дивимося тут.

Фіксація змін (Комміт)

Автоматично додати всі змінені файли в комерц
$ Git commit -a

Видалення файлів з Git
По суті це видалення файлу з відслідковуються. Якщо файл вже був до цього закоммічен в Git, то зі старих коммітов його як і раніше можна буде дістати.

Видалення файлу з відслідковуються Git, а так само його фізичне видалення з робочого каталогу
$ Git rm

Видалення проіндексованого зміненого файлу
$ Git rm -f

Видалення файлу з індексу, але збереження його в робочому каталозі
$ Git rm -cached

Більш детально дивимося тут.

$ Git mv

Найпростіший варіант це git log з різними ключами (дивимося help). Тут наведу просто приклади. А подробнеетут або в мануалі.

Висновок простий історії коммітов
$ Git log

Висновок останніх n записів, в прикладі висновок двох останніх записів
$ Git log -2

Висновок дельти (diff) різниці між останніми двома змінами (на рівні рядків)
$ Git log -p -2

Висновок змін між двома останніми коммітов на рівні слів
$ Git log -p -2 -word-diff

Висновок короткої статистики по 2 останнім коммітов
$ Git log -2 -stat

І дуже корисний ключ -pretty (дозволяє змінити формат виведення балки)
$ Git log -pretty = oneline

$ Git log -pretty = format: "% h -% an,% ar. % S »

Параметри ключа format

Можна так само подивитися ASCII граф гілок коммітов по ключу -graph
$ Git log -pretty = format: "% h% s» -graph

Є параметри, що обмежують за часом, такі як -since і -until. вельми корисні. Наприклад, наступна команда видає список коммітов, зроблених за останні два тижні:
$ Git log -since = 2.weeks

Інший корисний фільтр це опція -S, яка як параметр приймає рядок і показує тільки ті коммітов де цей рядок була змінена, добавлена ​​або видалена.
$ Git log -S

Приклад буде шукати рядок MyStringForSearch
$ Git log -SMyStringForSearch

Список коммітов з хешем (короткий число)
$ Git log -oneline

Скасування індексації файлу (виключення з індексу)
$ Git reset HEAD

Скасування змін файлу (до внесення файлу в комерц)
$ Git checkout -

З цією командою треба бути особливо обережним, докладніше тут.

Робота з віддаленими репозиторіями

Більш докладний висновок про них
$ Git remote -v

Отримання змін з віддаленого сховища під ім'ям tr в локальну гілку tr
$ Git fetch tr

Відправка даних на віддалений репозиторій. Формат git push [молодецький. сервер] [локальна гілка]
$ Git push origin master

Інспекція віддаленого сховища git remote show [молодецький. сервер]
$ Git remote show origin

Перейменування віддалених репозиторіїв (по суті перейменування локальної посилання на віддалений репозиторій)
$ Git remote rename
$ Git remote rename tr newtr

Видалення віддаленого сховища :) (попросту відключення від нього - в прикладі від origin)
$ Git remote rm origin

Детальніше про роботу з віддаленими репозиторіями тут.

Якщо у вас свій власний репозиторій Git на сервері з саме підписаним сертифікатом, то перед будь-якими командами роботи у віддалених репозиторієм (clone, fetch, push, pull і т.п.), Git буде лаятися на саме підписаний сертифікат. Вирішити проблему можна змінивши трохи конфиг
$ Git config -local http.sslVerify false

Або ж перед кожною операцією роботи з віддаленим репозиторієм вставляти доп команду
$ Git -c http.sslVerify = false push origin newbranch

А взагалі настройка свого сервера Git це окрема тема. Частково розглянута тут.

Робота з гілками

Подивитися локальні гілки
$ Git branch

Подивитися останній Комміт на кожній з локальних гілок
$ Git branch -v

Щоб подивитися всі існуючі локальні і віддалені гілки можна дати команду
$ Git branch -a

Подивитися останні коммітов на всіх гілках (локальних і віддалених)
$ Git branch -a -v

Подивитися відслідковують гілки
$ Git branch -vv

Зробити гілку локальну гілку serverfix відслідковується
$ Git branch -u origin / serverfix

створити гілку
$ Git branch <имя_ветки>

Створити гілку на певному Ком
$ Git branch new_branch 5a0eb04

перейменувати гілку
git branch -m

Перейменувати поточну гілку
git branch -m

Переключиться на гілку
$ Git checkout <имя_ветки>

Створити гілку і відразу ж переключиться на неї
$ Git checkout -b <имя_ветки>

Злиття гілок (в прикладі знаходимося на гілці master і зливаємо з нею гілку hotfix)
$ Git checkout master
$ Git merge hotfix

видалити гілку
$ Git branch -d <имя_ветки>

Видалити гілку serverfix на віддаленому сервері
$ Git push origin -delete serverfix

Робота з мітками

Подивитися всі (перераховує в алфавітному порядку, а не за часом їх створення)
$ Git tag

Подивитися потрапляють під маску
$ Git tag -l 'v1.4.2. *'

Створити мітку на поточному Ком (ключ -а) з меточного повідомленням (ключ -m)
$ Git tag -a v1.4 -m 'my version 1.4'

Створення легковагій мітки на поточному Ком
$ Git tag <имя_метки>
$ Git tag MyTAG

Завдання псевдонімів для команд Git

Псевдоніми можна створити як в конфігураційних файлах Git, так і в конфіги Bash, але важливо розуміти в чому різниця.

Завдання псевдонімів в конфігах Git

$ Git config -global alias.co checkout
$ Git config -global alias.br branch
$ Git config -global alias.ci commit
$ Git config -global alias.st status

Тепер досить давати команди
$ Git co
$ Git br
$ Git ci
$ Git st

Тобто через завдання алиасов в конфіги Git ми не позбавляємося від необхідності писати команду git. але все ж це коротше.

Крім того в ці команди так само можна підставляти параметри
$ Git config -global alias.unstage 'reset HEAD -'

Це робить еквівалентними наступні дві команди:
$ Git unstage fileA
$ Git reset HEAD fileA

Більш детально з Аліси в конфігах Git Новомосковськ тут.

Про АЛІАС заданих через Bash Новомосковськ тут.

Порівняння файлу в різних коммітов

$ Git diff ffd6b37 c258082 -cc test.txt

За допомогою зовнішніх утиліт ExamDiffPro і P4Merge

Дивимося зміни файлу test.txt між двома коммітов
$ Git difftool 9491cc8 02c1df6 -tool = edp -cc test.txt
$ Git difftool 9491cc8 02c1df6 -tool = p4m -cc test.txt

скасування злиття
$ Git merge -abort