Merge branch 'release-1.2.0'

This commit is contained in:
Kolan Sh 2013-07-08 19:42:34 +04:00
commit 6eabce9c68
1 changed files with 170 additions and 2 deletions

View File

@ -118,7 +118,7 @@ February 27, 2013
\end_layout
\begin_layout Date
Версия 1.1.0
Версия 1.2.0
\end_layout
\begin_layout Standard
@ -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
@ -1627,6 +1636,67 @@ 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 Standard
Разбить произвольный коммит на два последовательных коммита можно следующими
командами:
\end_layout
\begin_layout LyX-Code
git rebase -i <commit-to-split>^ 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
@ -2005,16 +2075,114 @@ 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
\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