text
This commit is contained in:
parent
e312541ae7
commit
02568f482b
@ -76,6 +76,14 @@ Hitchhiker’s Guide to the CMake]
|
|||||||
|
|
||||||
== Начало проекта
|
== Начало проекта
|
||||||
|
|
||||||
|
Проект, в котором выполнены приведённые ниже действия, можно посмотреть
|
||||||
|
https://git.246060.ru/f1x1t/cmex[здесь] или сделать его копию командой:
|
||||||
|
|
||||||
|
[source,sh]
|
||||||
|
----
|
||||||
|
git clone --recursive https://git.246060.ru/f1x1t/cmex
|
||||||
|
----
|
||||||
|
|
||||||
В каталоге `cmex` нужно создать файл `CMakeLists.txt`:
|
В каталоге `cmex` нужно создать файл `CMakeLists.txt`:
|
||||||
|
|
||||||
[source,cmake]
|
[source,cmake]
|
||||||
@ -91,12 +99,17 @@ project(cmex VERSION 0.2.0 LANGUAGES C CXX)
|
|||||||
Значение версии следует формировать согласно правилам
|
Значение версии следует формировать согласно правилам
|
||||||
https://semver.org/lang/ru/[семантического версионирования].
|
https://semver.org/lang/ru/[семантического версионирования].
|
||||||
|
|
||||||
В каталог `cmake/cmlib` установить подмодуль CMLib, содержащий функции
|
В каталоге `cmex` нужно инициализировать репозиторий и установить
|
||||||
для CMake:
|
подмодули, содержащие функции для CMake:
|
||||||
|
|
||||||
....
|
[source,sh]
|
||||||
git submodule add ssh://git@gitlab-server/root/cmlib cmake/cmlib
|
----
|
||||||
....
|
git init .
|
||||||
|
git submodule add https://git.246060.ru/f1x1t/cmlib cmake/cmlib
|
||||||
|
git submodule add https://git.246060.ru/f1x1t/cmake-find cmake/find
|
||||||
|
git submodule add https://git.246060.ru/f1x1t/cmake-generators cmake/generators
|
||||||
|
git submodule update --remote --init
|
||||||
|
----
|
||||||
|
|
||||||
и подключить в файле `CMakeLists.txt`:
|
и подключить в файле `CMakeLists.txt`:
|
||||||
|
|
||||||
@ -398,9 +411,9 @@ ExternalProject_Add(cmext
|
|||||||
)
|
)
|
||||||
----
|
----
|
||||||
|
|
||||||
Вызовы этих функций нужно сделать до функций `add_subdirectories`,
|
Вызовы этих функций нужно сделать до функций `add_subdirectories`, чтобы
|
||||||
чтобы в подключённых подкаталогах можно было использовать цель `cmext`
|
в подключенных подкаталогах можно было использовать цель `cmext` для
|
||||||
для определения зависимостей.
|
определения зависимостей.
|
||||||
|
|
||||||
В файле `cmex/src/cmex/CMakeLists.txt` нужно подключить внешний проект
|
В файле `cmex/src/cmex/CMakeLists.txt` нужно подключить внешний проект
|
||||||
`cmext`:
|
`cmext`:
|
||||||
|
@ -51,7 +51,7 @@ sudo apt-get install git
|
|||||||
Файлы в рабочем каталоге могут отслеживаться системой контроля версий
|
Файлы в рабочем каталоге могут отслеживаться системой контроля версий
|
||||||
(tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме
|
(tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме
|
||||||
обозначены зелёным фоном, могут быть неизменёнными (unmodified),
|
обозначены зелёным фоном, могут быть неизменёнными (unmodified),
|
||||||
изменёнными (modified) или подготовленными к фиксации (staged).
|
изменёнными (modified) или подготовленными к фиксации (indexed).
|
||||||
|
|
||||||
|
|
||||||
[.text-center]
|
[.text-center]
|
||||||
@ -61,7 +61,7 @@ sudo apt-get install git
|
|||||||
@startuml
|
@startuml
|
||||||
participant untracked as "Неотслеживамые\n(untracked)"
|
participant untracked as "Неотслеживамые\n(untracked)"
|
||||||
box "Отслеживаемые"
|
box "Отслеживаемые"
|
||||||
participant staged as "Подготовленные к фиксации\n(staged)" #55FF55
|
participant staged as "Подготовленные к фиксации\n(indexed)" #55FF55
|
||||||
participant unmodified as "Неизменённые\n(unmodified)" #99FF99
|
participant unmodified as "Неизменённые\n(unmodified)" #99FF99
|
||||||
participant modified as "Изменённые\n(modified)" #77FF77
|
participant modified as "Изменённые\n(modified)" #77FF77
|
||||||
end box
|
end box
|
||||||
@ -176,225 +176,126 @@ git rm <path/to/submodule>
|
|||||||
|
|
||||||
|`git commit` |`-a` |Зафиксировать все отслеживаемые файлы, которые были
|
|`git commit` |`-a` |Зафиксировать все отслеживаемые файлы, которые были
|
||||||
изменены
|
изменены
|
||||||
|
|===
|
||||||
|
|
||||||
|
== Удаление
|
||||||
|
|
||||||
|
[width="100%",cols="20%,20%,60%",options="header",]
|
||||||
|
|===
|
||||||
|
|Команда |Ключи |Описание
|
||||||
|`git rm` |`<filename>` |Удалить файл из индекса и рабочего каталога
|
|`git rm` |`<filename>` |Удалить файл из индекса и рабочего каталога
|
||||||
|
|
||||||
|`git rm` |`-f <filename>` |Force deletion of files from disk
|
|`git rm` |`-f <filename>` |Принудительное удаление файла
|
||||||
|
|
||||||
|`git rm` |`--cached <filename>` |Untrack file (without deleting)
|
|`git rm` |`--cached <filename>` |Удаление файла из проекта, но не из
|
||||||
|
рабочего каталога
|
||||||
|===
|
|===
|
||||||
|
|
||||||
== Информация
|
== Информация
|
||||||
|
|
||||||
[width="100%",cols="15%,25%,60%",options="header",]
|
[cols=",,",options="header",]
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git status` |`-s` |Вывод информации о рабочем каталоге в
|
|`git status` |`-s` |Вывод информации о рабочем каталоге в краткой форме
|
||||||
краткой форме
|
|
||||||
|
|
||||||
|`git log` |`--oneline` |Вывод журнала изменений в краткой форме
|
|`git log` |`--oneline` |Вывод журнала изменений в краткой форме
|
||||||
|
|
||||||
|`git ls-files` | |Вывод списка отслеживаемых и подготовленных файлов
|
|`git ls-files` | |Вывод списка отслеживаемых и подготовленных файлов
|
||||||
|===
|
|===
|
||||||
|
|
||||||
== $push branches (see tags for pushing tags)
|
== Удалённый репозиторий
|
||||||
|
|
||||||
[width="100%",cols="15%,25%,60%",options="header",]
|
[width="100%",cols="20%,20%,60%",options="header",]
|
||||||
[cols=",,",options="header",]
|
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git push` |`<remotename> <branchname>` |Push branch to remote
|
|`git remote` |`-v` |Список адресов удалённых репозиториев
|
||||||
|`git push` |`<remotename> --all` |Push all branches to remote
|
|
||||||
|`git push` |`--d <remotename> <branchname>` |`--delete` remote branch
|
|`git branch` |`-r` |Список веток в удалённых репозиториях
|
||||||
|
|
||||||
|
|`git remote` |`add <name> <url>` |Создать ссылку `<name>` на удалённый
|
||||||
|
репозиторий, находящийся по адресу `<url>`
|
||||||
|
|
||||||
|
|`git remote` |`rename <old> <new>` |Переименовать ссылку `<old>` на
|
||||||
|
`<new>`
|
||||||
|
|
||||||
|
|`git remote` |`rm <name>` |Удалить ссылку `<name>`
|
||||||
|===
|
|===
|
||||||
|
|
||||||
== $remote
|
* Обращение к удалённому репозиторию осуществляется по ссылке,
|
||||||
|
создаваемой командой `git remote`
|
||||||
|
* Команда `git clone` автоматически создаёт ссылку `origin`
|
||||||
|
|
||||||
* Remote connections are like bookmarks named after remote repos
|
== Отправка изменений
|
||||||
* `git clone` automatically creates a remote connection usually called
|
|
||||||
`origin`
|
|
||||||
|
|
||||||
[width="100%",cols="15%,25%,60%",options="header",]
|
[width="100%",cols="20%,20%,60%",options="header",]
|
||||||
[width="100%",cols="36%,26%,38%",options="header",]
|
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git remote` |`-v` |List remote repository endpoints
|
|`git push` |`<remote> <branch>` |Отправить ветку `<branch>` в удалённый
|
||||||
|
репозиторий `<remote>`
|
||||||
|
|
||||||
|`git branch` |`-r` |List remote repository branches
|
|`git push` |`<remote> --all` |Отправить все ветки в удалённый
|
||||||
|
репозиторий `<remote>`
|
||||||
|
|
||||||
|`git remote` |`add <name> <url>` |Create namespaced connection to a
|
|`git push` |`--d <remote> <branch>` |Удалить ветку `<branch>` из
|
||||||
remote repository
|
удалённого репозитория `<remote>`
|
||||||
|
|
||||||
|`git remote` |`rename <oldname> <newname>` |Rename connection
|
|
||||||
|
|
||||||
|`git remote` |`rm <name>` |Remove connection
|
|
||||||
|
|
||||||
|`git remote` |`add origin <url>` |Set remote origin
|
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Reference: https://git-scm.com/docs/git-remote
|
== Получение изменений
|
||||||
|
|
||||||
*Remove remote origin:*
|
[width="100%",cols="20%,20%,60%",options="header",]
|
||||||
|
|
||||||
[source,shell]
|
|
||||||
----
|
|
||||||
# Remove `origin` settings from .git/config
|
|
||||||
git remote rm origin
|
|
||||||
|
|
||||||
# Remove `FETCH_HEAD` which still points to remote
|
|
||||||
git rm .git/FETCH_HEAD
|
|
||||||
----
|
|
||||||
|
|
||||||
== $fetch-pull
|
|
||||||
|
|
||||||
[width="100%",cols="15%,25%,60%",options="header",]
|
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git fetch` |`<remote>` |Fetch all branches from remote (without merge)
|
|`git fetch` |`<remote>` |Получить изменения из всех веток репозитория
|
||||||
|`git fetch` |`<remote> <branch>` |Fetch specific branch
|
`<remote>`, но не выполнять слияние
|
||||||
|`git merge` |`<remote>/<branch>` |Merge fetched remote
|
|
||||||
|`git pull` |`<remote>` |Fetch and merge in one command
|
|`git fetch` |`<remote> <branch>` |Получить изменения из ветки
|
||||||
|
`<branch>` репозитория `<remote>`, но не выполнять слияние
|
||||||
|
|
||||||
|
|`git merge` |`<remote>/<branch>` |Выполнить слияние с веткой `<branch>`
|
||||||
|
репозитория `<remote>`
|
||||||
|
|
||||||
|
|`git pull` |`<remote>` |Получение и слияние
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Reference: https://git-scm.com/docs/git-fetch,
|
== Ветки
|
||||||
https://git-scm.com/docs/git-pull
|
|
||||||
|
|
||||||
== $branch
|
|
||||||
|
|
||||||
[cols=",,",options="header",]
|
[cols=",,",options="header",]
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git branch` | |List branches
|
|`git branch` |`-a` |Список локальных и удалённых веток
|
||||||
|
|
||||||
|`git branch` |`<branchname>` |Create new branch
|
|`git branch` | |Список локальных веток
|
||||||
|
|
||||||
|`git checkout` |`<sha-1>` |Switch to branch, or commit
|
|`git branch` |`<branch>` |Создать ветку `<branch>`
|
||||||
|
|
||||||
|`git branch` |`-m <branchname> <newname>` |Rename branch
|
|`git checkout` |`<sha-1>` |Перейти к фиксации с идентификатором
|
||||||
|
`<sha-1>`
|
||||||
|
|
||||||
|`git merge` |`<branchname>` |Merge changes from `<branchname>` to
|
|`git branch` |`-m <old> <new>` |Переименовать ветку `<old>` в `<new>`
|
||||||
current branch
|
|
||||||
|
|
||||||
|`git branch` |`-d <branchname>` |`--delete` branch
|
|`git merge` |`<branch>` |Слить изменения из ветки `<branch>` в текущую
|
||||||
|
ветку
|
||||||
|
|
||||||
|
|`git branch` |`-d <branch>` |Удалить ветку `<branch>`
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Reference: https://git-scm.com/docs/git-branch
|
== Сравнение
|
||||||
|
|
||||||
== $diff
|
[width="100%",cols="20%,20%,60%",options="header",]
|
||||||
|
|
||||||
[cols=",,",options="header",]
|
|
||||||
|===
|
|===
|
||||||
|Команда |Ключи |Описание
|
|Команда |Ключи |Описание
|
||||||
|`git diff` | |Compare *`working directory`* and *`index`*
|
|`git diff` | |Сравнить рабочий каталог и индекс
|
||||||
| |`–-cached` |Compare *`index`* and *`latest commit`*
|
|
||||||
| |`HEAD` |Compare *`latest commit`* and *`working directory`*
|
|`git diff` |`–-cached` |Сравнить индекс и последнюю фиксацию
|
||||||
| |`--stat` |Optional short format
|
|
||||||
| |`<sha-1> <sha-1>` |2 points in time to compare
|
|`git diff` |`HEAD` |Сравнить последнюю фиксацию и рабочий каталог
|
||||||
| |`<dir> | <file>` |Compare whole directory or limit to file
|
|
||||||
|
|`git diff` |`--stat` |Краткий вывод результатов
|
||||||
|
|
||||||
|
|`git diff` |`<sha-1> <sha-1>` |Сравнить две точки с указанными
|
||||||
|
идентификаторами
|
||||||
|
|
||||||
|
|`git diff` |`<dir>` `<file>` |Сравнивать только указанный каталог
|
||||||
|
`<dir>` или файл `<file>`
|
||||||
|
|
||||||
|
|`git difftool` | |Отобразить результаты сравнения в программе,
|
||||||
|
определяемой переменной `diff.tool`
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Reference: https://git-scm.com/docs/git-diff
|
|
||||||
|
|
||||||
*Examples:*
|
|
||||||
|
|
||||||
[source,shell]
|
|
||||||
----
|
|
||||||
## compare changes made to README.md between working tree (default) and latest commit (HEAD)
|
|
||||||
$ git diff --stat HEAD ./path/README.md
|
|
||||||
|
|
||||||
## compare changes made to README.md between 2 specific points in time (e.g. 2 commits)
|
|
||||||
$ git diff --stat a649900 24bdd58 ./path/README.md
|
|
||||||
----
|
|
||||||
|
|
||||||
== $tag
|
|
||||||
|
|
||||||
[width="100%",cols="36%,26%,38%",options="header",]
|
|
||||||
|===
|
|
||||||
|Команда |Ключи |Описание
|
|
||||||
|`git tag` | |List tags
|
|
||||||
|
|
||||||
|`git tag` |`<v1.0.0>` |Create tag, from latest commit, lightweight
|
|
||||||
|
|
||||||
|`git tag` |`-a <v1.0.0> -m "<msg>"` |Create tag, with `--annotate`,
|
|
||||||
from latest commit
|
|
||||||
|
|
||||||
|`git tag` |`-a <v1.0.0> -m "<msg>" <SHA-1>` |Create tag, with
|
|
||||||
`--annotate`, from specific commit
|
|
||||||
|
|
||||||
|`git tag` |`-d <v1.1.0>` |`--delete` tag
|
|
||||||
|
|
||||||
|`git show` |`<v1.0.0>` |Show tag data and message
|
|
||||||
|
|
||||||
|`git checkout` |`<v1.0.0>` |Switch to specific point tag (not editable)
|
|
||||||
|
|
||||||
|`git push` |`<remote> <tag>` |Push specific tag to `<remote>`
|
|
||||||
(recommended)
|
|
||||||
|
|
||||||
|`git push` |`<remote> --tags` |Push all tags to `<remote>` (only if
|
|
||||||
necessary)
|
|
||||||
|===
|
|
||||||
|
|
||||||
Инициализация репозитория в каталоге `dir`:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git init dir
|
|
||||||
----
|
|
||||||
|
|
||||||
Клонирование репозитория `repo`, принадлежащего пользователю `user`, с
|
|
||||||
сервера `gitlab.2` в каталог `dir`:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git clone git@gitlab.2:user/repo.git dir
|
|
||||||
----
|
|
||||||
|
|
||||||
Просмотр состояния рабочего каталога и репозитория:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git status
|
|
||||||
----
|
|
||||||
|
|
||||||
Краткая форма вывода состояния:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git status -s
|
|
||||||
----
|
|
||||||
|
|
||||||
Добавление файла `README.md` под версионный контроль и подготовка к
|
|
||||||
фиксации:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git add README.md
|
|
||||||
----
|
|
||||||
|
|
||||||
Удаление файла `README.md` из индекса репозитория:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git rm --cached README.md
|
|
||||||
----
|
|
||||||
|
|
||||||
Зафиксировать файлы, подготовленные к фиксации:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git commit
|
|
||||||
----
|
|
||||||
|
|
||||||
Зафиксировать все отслеживаемые файлы, которые были изменены:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git commit -a
|
|
||||||
----
|
|
||||||
|
|
||||||
Отправить все ветки репозитория на сервер с меткой `origin`:
|
|
||||||
|
|
||||||
[source,sh]
|
|
||||||
----
|
|
||||||
git push origin
|
|
||||||
----
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user