From b8710fb77487dca5030cda6f687c36d392fec420 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 8 Jul 2013 18:06:44 +0400 Subject: [PATCH 1/5] Add description for Git subrepos - simple and fast! Closes #351. --- git-tutorial.lyx | 87 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index aeaad14..b6cea01 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -1043,6 +1043,15 @@ Add collaborators и установить для добавленных поль git clone git@git.insysltd.ru:~user1/test_project/user1-test_repo.git \end_layout +\begin_layout Standard +Если репозиторий содержит субрепозитории (submodules) необходимо их инициализиро +вать и синхронизировать: +\end_layout + +\begin_layout LyX-Code +git submodule update --init --recursive +\end_layout + \begin_layout Subsubsection pull-request - запрос на слияние \end_layout @@ -2005,15 +2014,91 @@ git cherry-pick --ff ..next # если история линейная и к текущей ветви \end_layout +\begin_layout Subsection +Субрепозитории +\end_layout + +\begin_layout Standard +Или так называемые Git submodules. + Применяются для включения одних проектов в другие или для создания суперпроекто +в. + При этом обновления в подпроектах не затрагивают основной проект до тех + пор, пока владелец проекта не захочет это сделать явно, убедившись, что + эти изменения оставляют проект в рабочем состоянии. +\end_layout + +\begin_layout Standard +Создать Git submodule очень просто, например добавим в некоторый проект + my-project библиотеку my-lib: +\end_layout + \begin_layout LyX-Code +cd my-project +\end_layout + +\begin_layout LyX-Code +git submodule add git@git.github.com:mynickname/my-lib.git +\end_layout + +\begin_layout LyX-Code +git commit -m +\begin_inset Quotes eld +\end_inset + +Added my-lib submodule. +\begin_inset Quotes erd +\end_inset + \end_layout \begin_layout LyX-Code - +git push +\end_layout + +\begin_layout Standard +Команда \end_layout \begin_layout LyX-Code + git submodule update --init --recursive +\end_layout + +\begin_layout Standard +рекурсивно обновляет всем субмодули, которые в свою очередь могут содержать + другие субмодули из origin remote. + Следует отметить, что после выполнения данной команды сурепозитории могут + оказаться в +\begin_inset Quotes eld +\end_inset + +detached state +\begin_inset Quotes erd +\end_inset + +, то есть не привязанными к какой-либо ветке. +\end_layout + +\begin_layout Standard +Если требуется внести изменения в субрепозиторий, то это делается как и + с обычным проектом (edit, commit, push). + Важно отметить, что изменения в субрепозитории не влияют на главный репозиторий + до тех пор, пока в нём это явно не будет указано: +\end_layout + +\begin_layout LyX-Code +git add my-lib +\end_layout + +\begin_layout LyX-Code +git commit -m +\begin_inset Quotes eld +\end_inset + +my-lib submodule updated. +\begin_inset Quotes erd +\end_inset + \end_layout From 6db116c1d187dd37774962a25ccee06ef47aca87 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 8 Jul 2013 19:17:52 +0400 Subject: [PATCH 2/5] Add git prune, clean, gc examples... Closes #293. --- git-tutorial.lyx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index b6cea01..a903578 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -2102,6 +2102,28 @@ my-lib submodule updated. \end_layout +\begin_layout Subsection +Свободное место на диске +\end_layout + +\begin_layout Standard +Для удаления временных файлов и сжатия истории можно использовать следующие + команды: +\end_layout + +\begin_layout LyX-Code +git clean # удалить неотслеживаемые файлы в репозитории +\end_layout + +\begin_layout LyX-Code +git prune # удалить все недостижимые объекты/коммиты из базы данных +\end_layout + +\begin_layout LyX-Code +git gc --aggressive --prune # удалить все бесполезные объекты и оптимизировать + локальный репозиторий +\end_layout + \begin_layout Section Удачная модель ветвления \end_layout From ea0d36b89f7db4c4032e600375fd2c8a6860891f Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 8 Jul 2013 19:29:11 +0400 Subject: [PATCH 3/5] Add: git rebase -i -> squash. Closes #244. --- git-tutorial.lyx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index a903578..f22155b 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -1636,6 +1636,22 @@ git commit -m # во второй коммит. \end_layout +\begin_layout Standard +Объединение нескольких коммитов в один можно выполнить ещё проще: +\end_layout + +\begin_layout LyX-Code +git rebase -i -p HEAD~5 +\end_layout + +\begin_layout LyX-Code +# редактирование: заменить 'pick' на 'squash' для коммитов, +\end_layout + +\begin_layout LyX-Code +# которые хотим объединить, сохранить. +\end_layout + \begin_layout Subsubsection Выделение поддиректории в отдельный репозиторий \end_layout From 6d084ffbf2d5319bab574fcd5de6a0d50761eb20 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 8 Jul 2013 19:41:12 +0400 Subject: [PATCH 4/5] Add: git rebase -i ->| split. Closes #245. --- git-tutorial.lyx | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index f22155b..b72e7ad 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -1652,6 +1652,51 @@ git rebase -i -p HEAD~5 # которые хотим объединить, сохранить. \end_layout +\begin_layout Standard +Разбить произвольный коммит на два последовательных коммита можно следующими + командами: +\end_layout + +\begin_layout LyX-Code +git rebase -i ^ branch_name +\end_layout + +\begin_layout LyX-Code +git rebase HEAD^ +\end_layout + +\begin_layout LyX-Code +git add -p # add changes for the 1th commit +\end_layout + +\begin_layout LyX-Code +git commit -m +\begin_inset Quotes eld +\end_inset + +1st commit +\begin_inset Quotes erd +\end_inset + + # make 1st commit +\end_layout + +\begin_layout LyX-Code +git commit -am +\begin_inset Quotes eld +\end_inset + +2nd commit +\begin_inset Quotes erd +\end_inset + + # make 2nd commit +\end_layout + +\begin_layout LyX-Code +git rebase --continue # complete rebase operation +\end_layout + \begin_layout Subsubsection Выделение поддиректории в отдельный репозиторий \end_layout From 84e70fc81e5d06396e2bcd1e0d4d7f8d425c0809 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 8 Jul 2013 19:42:10 +0400 Subject: [PATCH 5/5] Bumped version number to 1.2.0 --- git-tutorial.lyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-tutorial.lyx b/git-tutorial.lyx index b72e7ad..376cfd1 100644 --- a/git-tutorial.lyx +++ b/git-tutorial.lyx @@ -118,7 +118,7 @@ February 27, 2013 \end_layout \begin_layout Date -Версия 1.1.0 +Версия 1.2.0 \end_layout \begin_layout Standard