Merge branch 'release-1.2.0'
This commit is contained in:
commit
6eabce9c68
170
git-tutorial.lyx
170
git-tutorial.lyx
|
@ -118,7 +118,7 @@ February 27, 2013
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Date
|
\begin_layout Date
|
||||||
Версия 1.1.0
|
Версия 1.2.0
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
|
@ -1043,6 +1043,15 @@ Add collaborators и установить для добавленных поль
|
||||||
git clone git@git.insysltd.ru:~user1/test_project/user1-test_repo.git
|
git clone git@git.insysltd.ru:~user1/test_project/user1-test_repo.git
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
Если репозиторий содержит субрепозитории (submodules) необходимо их инициализиро
|
||||||
|
вать и синхронизировать:
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout LyX-Code
|
||||||
|
git submodule update --init --recursive
|
||||||
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsubsection
|
\begin_layout Subsubsection
|
||||||
pull-request - запрос на слияние
|
pull-request - запрос на слияние
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -1627,6 +1636,67 @@ git commit -m
|
||||||
# во второй коммит.
|
# во второй коммит.
|
||||||
\end_layout
|
\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
|
\begin_layout Subsubsection
|
||||||
Выделение поддиректории в отдельный репозиторий
|
Выделение поддиректории в отдельный репозиторий
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -2005,16 +2075,114 @@ git cherry-pick --ff ..next # если история линейная и
|
||||||
к текущей ветви
|
к текущей ветви
|
||||||
\end_layout
|
\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
|
\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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout LyX-Code
|
\begin_layout LyX-Code
|
||||||
|
git push
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
Команда
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout LyX-Code
|
\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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
|
|
Loading…
Reference in New Issue