From c5f03afc597f82d7157067df966b9ecbc28f4fb8 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 1 Sep 2014 12:05:12 +0400 Subject: [PATCH] Add empty string after the lists and code blocks. Closes #623. --- git-tutorial.lyx | 299 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 298 insertions(+), 1 deletion(-) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index cb20a61..676e1cb 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -390,6 +390,13 @@ Initial commit. . \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Индексом в Git называется промежуточное хранилище изменений, попадающих в ближайший коммит. @@ -467,6 +474,13 @@ begin_layout Subsubsection Stage this hunk [y,n,q,a,d,/,e,?]? y \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Параметр -m у команды commit указывает на то, что следующим аргументом команды следует описание коммита, что удобно, когда нужно коммит сделать быстро. @@ -625,6 +639,13 @@ $ git status -s # использовать сокращённую запись ?? git-tutorial.pdf \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Сами изменения можно посмотреть командой diff: \end_layout @@ -833,6 +854,13 @@ git branch -d featureA # удаление ветки featureA \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard При работе с системами управления проектами (ChilliProject, Redmine, Trac) по завершении работы с ветвью имеет смысл добавлять в сообщение коммита @@ -867,6 +895,13 @@ Bug B fixed. \end_inset +\end_layout + +\begin_layout Standard +\begin_inset space ~ +\end_inset + + \end_layout \begin_layout Standard @@ -879,6 +914,13 @@ Bug B fixed. git merge --squash \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Иногда в списке удалённых веток (git branch -r) остаются несуществующие ссылки в результате того, что кто-то удалил эту ветвь или несколько веток @@ -919,6 +961,13 @@ git branch -d -r github/invalid_branch2 git push \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Также возможны более сложные операции, к примеру: \end_layout @@ -1048,6 +1097,13 @@ git blame -L 40,+21 main.c # вывести информацию о 21-ой с с 40-ой \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Если требуется отфильтровать слишком старую историю, можно это сделать следующим образом: @@ -1063,6 +1119,13 @@ git blame --since=3.weeks -- main.c # игнорировать информац недель \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Вот пример, как можно посчитать общий вклад разработчиков в конкретный файл проекта: @@ -1108,6 +1171,13 @@ git blame --line-porcelain mainform.cpp | sed -n 's/^author //p' | sort | git clone git@git.insysltd.ru:~user1/test_project/user1-test_repo.git \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Если репозиторий содержит субрепозитории (submodules) необходимо их инициализиро вать и синхронизировать: @@ -1171,6 +1241,13 @@ git format-patch master # создать патч, включающий отли от ветки master \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Далее полученный патч может быть отправлен по email или прямо в окно Jabber-клие нта. @@ -1182,6 +1259,13 @@ git format-patch master --stdout | mail -s 'Please apply this patch, Leo' leo@matrix.org \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Применить полученный патч можно командой apply: \end_layout @@ -1222,7 +1306,10 @@ git branch -r # список удалённых веток git branch -a # список всех веток, включая удалённые \end_layout -\begin_layout LyX-Code +\begin_layout Standard +\begin_inset space ~ +\end_inset + \end_layout @@ -1273,6 +1360,13 @@ git log --graph --decorate --stat -stat -- печатать статистику по изменениям в каждом файле. \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Если нужно вывести лог на определённом временном промежутке, через две точки вводится начало и конец: @@ -1286,6 +1380,13 @@ git log master..develop git log f8a32c..3ab98c \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Можно исключать из выводимого списка коммиты, входящие в какую-либо ветвь, например следующая команда выведет список коммитов из develop, не вошедшие @@ -1296,6 +1397,13 @@ git log f8a32c..3ab98c git log develop ^master \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Более полный список опций описан в руководстве (git help log). \end_layout @@ -1430,6 +1538,13 @@ git stash apply # применить спрятанные измен их из stash-списка \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Можно получить любую версию файла или директории посредством команды checkout: \end_layout @@ -1448,6 +1563,13 @@ git checkout . # получить из головы (HEAD) содержимое текущей директории \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Можно отменить изменения, попавшие в индекс для следующего коммита: \end_layout @@ -1460,6 +1582,13 @@ git reset # очистить индекс git reset main.h # убрать из индекса main.h \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Вся история команд работы с Git хранится в локальном списке reflog: \end_layout @@ -1654,6 +1783,13 @@ git rebase --continue # обновить все последующие комм git push -f # отправить изменённую ветвь на Git-сервер \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Также, в некоторых случаях бывает необходимо отредактировать самый первый коммит (root-commit): @@ -1701,6 +1837,13 @@ git commit -m # во второй коммит. \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Объединение нескольких коммитов в один можно выполнить ещё проще: \end_layout @@ -1717,6 +1860,13 @@ git rebase -i -p HEAD~5 # которые хотим объединить, сохранить. \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Разбить произвольный коммит на два последовательных коммита можно следующими командами: @@ -1840,6 +1990,13 @@ ABC/ \end_layout \end_deeper +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Для этого воспользуемся командой filter-branch, изменяющей историю. \end_layout @@ -1883,6 +2040,13 @@ git filter-branch --index-filter "git rm -r -f --cached --ignore-unmatch # оставив ABC \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Аналогично создаётся репозиторий для XYZ \end_layout @@ -1910,6 +2074,13 @@ git filter-branch --index-filter "git rm -r -f --cached --ignore-unmatch --prune-empty --tag-name-filter cat -- --all \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard По опциям команды filter-branch смотрите документацию (git help filter-branch). \end_layout @@ -1938,6 +2109,13 @@ git reset --soft HEAD~1 # удалить последний коммит, сох \end_inset +\end_layout + +\begin_layout Standard +\begin_inset space ~ +\end_inset + + \end_layout \begin_layout Standard @@ -2141,6 +2319,13 @@ git bisect skip # пропустить текущую ревизию git bisect reset # закончить двоичный поиск \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Как только bisect нашёл источник ошибки - ревизию, в которой она была внесена, для нахождения ошибки остаётся проанализировать изменения в одном текущем @@ -2172,6 +2357,13 @@ git bisect reset # закончить двоичный поиск выпуском новой версии и слиянием исправлений в master и develop. \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Случаются ситуации, когда в дереве истории Git нужно найти коммит, где ошибка была исправлена, например, чтобы сообщить мэнтайнеру проекта для отметки @@ -2333,6 +2525,13 @@ Added my-lib submodule. git push \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Команда \end_layout @@ -2407,6 +2606,13 @@ git checkout -b mylib_branch mylib_remote/master git checkout master \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Допустим, мы хотим поместить проект mylib в подкаталог с тем же именем: \end_layout @@ -2415,6 +2621,13 @@ git checkout master git read-tree --prefix=mylib/ -u mylib_branch \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard В отличие от субмодулей данные поддерева хранятся физически в репозитории. Субмодули же, по своей сути, лишь ссылаются на данные в другом репозитории. @@ -2445,6 +2658,13 @@ git merge --squash -s subtree --no-commit mylib_branch # смержить в myl git commit # зафиксировать изменения \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Узнать о наличии разницы между подкаталогом mylib/ и кодом в mylib_branch можно при помощи @@ -2563,6 +2783,13 @@ git fsck git fsck # выполнить проверку \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Иногда случается, что объект добавлен в индекс \begin_inset Quotes eld @@ -2891,6 +3118,13 @@ master develop \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Ветвь master создаётся при инициализации репозитория, что должно быть знакомо каждому пользователю Git. @@ -2964,6 +3198,13 @@ production-ready Ветви исправлений (Hotfix branches) \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard У каждого типа ветвей есть своё специфическое назначение и строгий набор правил, от каких ветвей они могут порождаться, и в какие должны вливаться. @@ -3109,6 +3350,13 @@ Deleted branch myfeature (was 05e9557). $ git push origin develop \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Флаг --no-ff вынуждает Git всегда создавать новый объект коммита при слиянии, даже если слияние может быть осуществлено алгоритмом fast-forward. @@ -3268,6 +3516,13 @@ $ git commit -a -m "Bumped version number to 1.2" 1 files changed, 1 insertions(+), 1 deletions(-) \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Мы создали новую ветку, переключились в неё, а затем выставили номер версии (bump version number). @@ -3339,6 +3594,13 @@ Merge made by recursive. $ git tag -a 1.2 \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Теперь релиз издан и помечен тегом. \end_layout @@ -3378,6 +3640,13 @@ Merge made by recursive. (Отчёт об изменениях) \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Этот шаг, в принципе, может привести к конфликту слияния (нередко бывает, что к причиной конфликта является изменение номера версии проекта). @@ -3505,6 +3774,13 @@ $ git commit -a -m "Bumped version number to 1.2.1" 1 files changed, 1 insertions(+), 1 deletions(-) \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Не забывайте обновлять номер версии после создания ветви! \end_layout @@ -3566,6 +3842,13 @@ Merge made by recursive. $ git tag -a 1.2.1 \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard \series bold @@ -3599,6 +3882,13 @@ Merge made by recursive. (Отчёт об изменениях) \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard У этого правила есть одно исключение: \series bold @@ -3729,6 +4019,13 @@ git config --global user.email "you@example.com" git config --global user.name "Your Name" \end_layout +\begin_layout Standard +\begin_inset space ~ +\end_inset + + +\end_layout + \begin_layout Standard Опция --global указывает, что настройки должны быть применены глобально, а не только к текущему репозиторию.