Что есть Git
http://ru.wikipedia.org/wiki/Git
Дополнительный параметр -i позволяет выбрать файлы для индексирования в интерактивном режиме.
Если репозиторий уже существует, например по адресу https://my@repo/myproject.git то его можно скопировать clone себе командой
После того, как файлы репозитария были изменены нужно зафиксировать эти изменения в git.
зафиксировать commit сделанные изменения
-m "note" добавить комментарий к коммиту
log Показать историю коммитов
Удалить (reset) последний коммит (но не изменения) (--soft)
Удалить последний коммит и последние изменения (--hard)
Все коммиты имеют SHA1 хэш, например 9effa6ec863ea18823ca69bfae1d1f0ac610e544
Используя хэш можно обратиться к конкретному коммиту (вместо последнего HEAD^). Обычно требуется только первые 4 цифры хэша для идентификации коммита (здесь это 9eff).
Удалить reset все коммиты после заданного
посмотреть список веток branch
Cоздать новую ветку. Ветка будет создана как копия текущей.
-m или --move переименовать ветвь, например
HEAD текущая ветка. точнее, ...
origin главный репозиторий по-умолчанию. ...
рассказать о себе
***
Сделать слияние определённых файлов из разных веток - SO
Типичный сценарий работы с git.
Предполагается, что существуют две ветки: master, где должна содержатся рабочая версия кода и develop - ветка, в которую вносятся изменения.
На ветке develop. Внести изменения в отслеживаемые файлы.
Зафиксировать изменения в git
Вернутся в ветку develop для внесения новых изменений.
Правила хорошего тона при работе с git в многопользовательском окружении
Обзорные:
http://habrahabr.ru/post/60030/
http://habrahabr.ru/post/60347/
Отладка с помощью Git
Магия Git - хорошая онлайн-книга о Git
Немного отвлечённое
Стиль именования коммитов
http://ru.wikipedia.org/wiki/Git
Начало
Создать init репозиторий в текущем каталоге
git init
Будет создан скрытый каталог .git, содежащий информацию о репозитарии. Однако git пока не отслеживает изменения в файлах каталога.
Их нужно добавить add в список отслеживания т.н. индекс:git add <имя_файла_или_папки>или
. - означает, что добавить необходимо все файлы которые есть.git add .
Дополнительный параметр -i позволяет выбрать файлы для индексирования в интерактивном режиме.
Если репозиторий уже существует, например по адресу https://my@repo/myproject.git то его можно скопировать clone себе командой
Удалить rm файлы с дискаgit clone https://my@repo/myproject.git
Удалить файлы из индекса (отслеживания)git rm <файл>
git rm --cached <файл>
Git будет часто напоминать о не отслеживаемых файлах, в каталоге репозитория. Имена этих файлов можно добавить в спосок исключений:
.git\info\exclude - файл с описанием типов файлов и папок не включаемых в репозиторийПосле того, как файлы репозитария были изменены нужно зафиксировать эти изменения в git.
зафиксировать commit сделанные изменения
поместить push все изменения в главное хранилищеgit commit -am "примечание"
достать pull из главного хранилищаgit push
Наконец самый полезный параметр --helpgit pull
git <вот-об-этой-команде-я-и-хочу-что-то-узнать> --help
Коммиты (фиксации)
Сделать коммит.
-a сделать коммит для всех файлов, если необходимо - неявно выполнить git add и git rm, для новых файлов и удалённых соответственноgit commit -am "примечание"
-m "note" добавить комментарий к коммиту
log Показать историю коммитов
git log
Последнее выглядит куда приятнее если использовать текстовый интерфейс для Git под названием tig:
Редактирование коммитов
Дополнить (--amend) коммит изменениями.
Если коммит был сделан преждевременно, то можно внести изменения и после и добавить их в него, не создавая нового:git commit -a --amend
Удалить (reset) последний коммит (но не изменения) (--soft)
git reset --soft HEAD^
Удалить последний коммит и последние изменения (--hard)
git reset --hard HEAD^
Все коммиты имеют SHA1 хэш, например 9effa6ec863ea18823ca69bfae1d1f0ac610e544
Используя хэш можно обратиться к конкретному коммиту (вместо последнего HEAD^). Обычно требуется только первые 4 цифры хэша для идентификации коммита (здесь это 9eff).
Удалить reset все коммиты после заданного
git reset --hard <хэш_фиксации> [файл для которого будет выполнена команда]Переключится checkout на определённый коммит
git checkout <хэш_фиксации> [файл для которого будет выполнена команда]Вернуть файл на состоние последнего коммита
git checkout -- file.txt
Ветки
master - название основной ветки по-умолчанию.
посмотреть список веток branch
-a или --all - посмотреть список всех веток, в том числе и хранимых в главном хранилище.git branch
Cоздать новую ветку. Ветка будет создана как копия текущей.
-d или --delete - удалить веткуgit branch <имя_ветки>
-m или --move переименовать ветвь, например
переключится на веткуgit branch -m <имя_ветки> <новое_имя_ветки>
-b - с этим параметром переключение происходит вместе с созданием новой веткиgit checkout <имя_ветки>
Конфликты
Если в ветках, слияние которых происходит редактировались одни и те же части файлов - происходит конфликт. Git, тем не мение, помещает все изменения в один и тот же файл, однако отделяет изменения активной ветки
и той, с которой происходит слияние таким образомОставить "их" или "наш" файл:
<<<<<<< HEAD изменения в текущей ветке ======= изменения ветки с которой происходит слияние >>>>>>> d918d23958841041e2f75b9cbfafc93e9a9a1321
git checkout --theirs -- path/to/conflicted-file.txt
git checkout --ours -- path/to/conflicted-file.txt
Алсо
head ссылка на последнюю фиксацию в текущей ветке
HEAD текущая ветка. точнее, ...
origin главный репозиторий по-умолчанию. ...
рассказать о себе
git config --global user.name "Your Name"
git config --global user.email you@example.com
Если опустить ключ --global
в вышеприведённых командах то изменения коснутся только данного репозитория.***
Сделать слияние определённых файлов из разных веток - SO
Примеры
Создать репозиторий
репозиторий уже есть...git init# смотрим что есть в папкеgit status# при желании добавляем в файл .git/info/exclude исключения, файлы (или каталоги) которые не должны отслеживаться гитомgit add .
git commit -am "..."git checkout -b develop_branch
git clone https://sotona@bitbucket.org/sotona/p.git
git checkout -b my_branch
# делаем какие-нибудь изменения
git commit -am "какое нибудь информативное описание"[link]
# ещё несколько изменений-фиксаций
...
# теперь наконец-то есть чем похвалиться, зальём изменения (и заодно новую ветку) в главное хранилище.
git push origin rz_consts
# ещё несколько фиксаций и выталкиваний (какое-то дурацкое слово)
...
# похоже в этой ветке все задуманные изменения сделаны и к тому же работают. Пора объединить её с главной (master) веткой
git checkout master
git merge my_branch
# отлично, заливаем всё в главное хранилище
git push origin master
Типичный сценарий работы с git.
Предполагается, что существуют две ветки: master, где должна содержатся рабочая версия кода и develop - ветка, в которую вносятся изменения.
На ветке develop. Внести изменения в отслеживаемые файлы.
Зафиксировать изменения в git
git commit -am "комментарий к изменениям"
Убедится, что код с внесенными изменениями работает.
Переключится на ветку master и объединить её с develop.
git checkout master
git merge develop
Вернутся в ветку develop для внесения новых изменений.
git checkout develop
Git GUI
Ссылки
codeschool: git (интерактивное введение в git)
Правила хорошего тона при работе с git в многопользовательском окружении
Обзорные:
http://habrahabr.ru/post/60030/
http://habrahabr.ru/post/60347/
Отладка с помощью Git
Магия Git - хорошая онлайн-книга о Git
Немного отвлечённое
Стиль именования коммитов
Комментариев нет:
Отправить комментарий