From e531a8d365a6faba0703629f6e454040b93d935f Mon Sep 17 00:00:00 2001 From: Timur Rakhimianov Date: Tue, 2 Nov 2021 20:19:50 +0500 Subject: [PATCH] Solved --- .gitconfig-for-nix | 37 ++ .gitconfig-for-win | 36 ++ .gitignore | 5 + apply-gitconfig-for-nix.sh | 18 + apply-gitconfig-for-win.cmd | 62 ++++ branch.md | 17 + commit.md | 14 + fetch.md | 5 + help.md | 28 ++ index.html | 91 +++++ init.md | 4 + merge.md | 6 + push.md | 9 + rebase.md | 8 + reset.md | 15 + run.cmd | 3 + styles/marked.css | 695 ++++++++++++++++++++++++++++++++++++ styles/prism.css | 139 ++++++++ upstream.md | 10 + 19 files changed, 1202 insertions(+) create mode 100644 .gitconfig-for-nix create mode 100644 .gitconfig-for-win create mode 100644 .gitignore create mode 100755 apply-gitconfig-for-nix.sh create mode 100644 apply-gitconfig-for-win.cmd create mode 100644 branch.md create mode 100644 commit.md create mode 100644 fetch.md create mode 100644 help.md create mode 100644 index.html create mode 100644 init.md create mode 100644 merge.md create mode 100644 push.md create mode 100644 rebase.md create mode 100644 reset.md create mode 100644 run.cmd create mode 100644 styles/marked.css create mode 100644 styles/prism.css create mode 100644 upstream.md diff --git a/.gitconfig-for-nix b/.gitconfig-for-nix new file mode 100644 index 00000000..ada35de9 --- /dev/null +++ b/.gitconfig-for-nix @@ -0,0 +1,37 @@ +[merge] + tool = vscode +[mergetool] + keepbackup = false +[diff] + tool = vscode + guitool = vscode +[core] + autocrlf = input +[pull] + ff = only + rebase = false +[fetch] + prune = false +[rebase] + autoStash = false +[difftool "vscode"] + path = code + cmd = code --wait --diff $LOCAL $REMOTE +[mergetool "vscode"] + path = code + cmd = code --wait $MERGED +[credential] + helper = manager +[alias] + it = !git init && git commit -m 'Initial commit' --allow-empty + st = status -sb + call = !git add . && git commit -m + commend = commit --amend --no-edit + graph = log --oneline --decorate --graph --all + to = checkout + pushup = push -u origin HEAD + please = push --force-with-lease + puff = pull --ff-only + pure = pull --rebase --autostash + undo = reset --soft HEAD^ + diff --git a/.gitconfig-for-win b/.gitconfig-for-win new file mode 100644 index 00000000..d483dd1e --- /dev/null +++ b/.gitconfig-for-win @@ -0,0 +1,36 @@ +[merge] + tool = vscode +[mergetool] + keepbackup = false +[diff] + tool = vscode + guitool = vscode +[core] + autocrlf = true +[pull] + ff = only + rebase = false +[fetch] + prune = false +[rebase] + autoStash = false +[difftool "vscode"] + path = code + cmd = code --wait --diff $LOCAL $REMOTE +[mergetool "vscode"] + path = code + cmd = code --wait $MERGED +[credential] + helper = manager +[alias] + it = !git init && git commit -m 'Initial commit' --allow-empty + st = status -sb + call = !git add . && git commit -m + commend = commit --amend --no-edit + graph = log --oneline --decorate --graph --all + to = checkout + pushup = push -u origin HEAD + please = push --force-with-lease + puff = pull --ff-only + pure = pull --rebase --autostash + undo = reset --soft HEAD^ diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..f35ed070 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Коллекция полезных .gitignore от GitHub: https://github.com/github/gitignore + + +# Исключение из игнорирования конкретного файла: +!init.md diff --git a/apply-gitconfig-for-nix.sh b/apply-gitconfig-for-nix.sh new file mode 100755 index 00000000..32896b5e --- /dev/null +++ b/apply-gitconfig-for-nix.sh @@ -0,0 +1,18 @@ +#!/bin/bash +git config --local include.path "../.gitconfig-for-nix" + +# setting editor for commits +git config --local core.editor nano + +# setting anonymous name and email if not configured by user +GitUserEmail=$(git config --get user.email) +if [[ "$GitUserEmail" == "" ]]; then + git config --local user.email "johndoe@example.com" +fi +GitUserName=$(git config --get user.name) +if [[ "$GitUserName" == "" ]]; then + git config --local user.name "John Doe" +fi + +echo "Configuration is done" +sleep 3 diff --git a/apply-gitconfig-for-win.cmd b/apply-gitconfig-for-win.cmd new file mode 100644 index 00000000..ddd91a57 --- /dev/null +++ b/apply-gitconfig-for-win.cmd @@ -0,0 +1,62 @@ +@echo off + +set GIT=git + +%GIT% --help > nul + +if %errorlevel% neq 0 ( + set GIT="%ProgramFiles%\Git\bin\gi.exe" +) + +%GIT% --help > nul + +if %errorlevel% neq 0 ( + color 0c + echo. + echo. + echo "Git is not configured properly... Ask for help!" + pause + exit +) + +REM setting editor for commits +%GIT% config --local core.editor notepad + +REM including predefined config +%GIT% config --local include.path "../.gitconfig-for-win" + +REM setting up absolute path to visual studio code +if exist "%ProgramFiles(x86)%\Microsoft VS Code\Code.exe" ( + %GIT% config --local difftool.vscode.path "%ProgramFiles(x86)%\Microsoft VS Code\Code.exe" + %GIT% config --local difftool.vscode.cmd "%ProgramFiles(x86)%\Microsoft VS Code\Code.exe --wait --diff $LOCAL $REMOTE" + %GIT% config --local mergetool.vscode.path "%ProgramFiles(x86)%\Microsoft VS Code\Code.exe" + %GIT% config --local mergetool.vscode.cmd "%ProgramFiles(x86)%\Programs\Microsoft VS Code\Code.exe --wait $MERGED" +) +if exist "%ProgramFiles%\Microsoft VS Code\Code.exe" ( + %GIT% config --local difftool.vscode.path "%ProgramFiles%\Microsoft VS Code\Code.exe" + %GIT% config --local difftool.vscode.cmd "%ProgramFiles%\Microsoft VS Code\Code.exe --wait --diff $LOCAL $REMOTE" + %GIT% config --local mergetool.vscode.path "%ProgramFiles%\Microsoft VS Code\Code.exe" + %GIT% config --local mergetool.vscode.cmd "%ProgramFiles%\Programs\Microsoft VS Code\Code.exe --wait $MERGED" +) +if exist "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" ( + %GIT% config --local difftool.vscode.path "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" + %GIT% config --local difftool.vscode.cmd "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe --wait --diff $LOCAL $REMOTE" + %GIT% config --local mergetool.vscode.path "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" + %GIT% config --local mergetool.vscode.cmd "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe --wait $MERGED" +) + +REM setting anonymous name and email if not configured by user +for /f %%i in ('git config --get user.email') do set GitUserEmail=%%i + +if [%GitUserEmail%] == [] ( + %GIT% config --local user.email "johndoe@example.com" +) + +for /f %%i in ('git config --get user.name') do set GitUserName=%%i + +if [%GitUserName%] == [] ( + %GIT% config --local user.name "John Doe" +) + +echo Configuration is done +pause diff --git a/branch.md b/branch.md new file mode 100644 index 00000000..745b785e --- /dev/null +++ b/branch.md @@ -0,0 +1,17 @@ +## S3. Манипуляции через ссылки, нет ссылки — в мусор +#### HEAD — текущая ссылка, tag — фиксированная ссылка, branch — движущаяся за HEAD ссылка +#### checkout — перемещение на ветку или коммит, reset — перемещение с веткой на коммит +#### Видно то, на что есть ссылки, остальное — мусор +- `git tag` — вывести список тегов +- `git tag ` — создать тег +- `git branch` — вывести список локальных веток +- `git branch -av` — вывести список локальных и удаленных веток +- `git branch ` — создать ветку +- `git branch -d ` — удалить ветку +- `git checkout ` или `git switch --detach ` — переместить HEAD на коммит, причем получится detached HEAD +- `git checkout `или `git switch ` — переместить HEAD на ветку +- `git checkout -b ` или `git switch -c ` — создать ветку и перейти на нее +- `git reset --hard ` — переместить HEAD и текущую ветку на `` +- `git reflog show ` — показать лог действий со ссылкой +- `git reflog` = `git reflog show HEAD` — показать лог действий с HEAD +- `git gc` — удалить ненужные файлы и оптимизировать локальный репозиторий diff --git a/commit.md b/commit.md new file mode 100644 index 00000000..4c7d4b3a --- /dev/null +++ b/commit.md @@ -0,0 +1,14 @@ +## S2. Хранятся состояния директории, постепенная сборка коммита +#### Хранятся файлы, разница вычисляется на лету +#### Commit index для сборки коммита +- `git add .` — добавить все измененные файлы в индекс +- `git commit -m ` — записать изменения из индекса в репозиторий +- `git status -sb` — вывести состояние директории и индекса кратко с указанием текущей ветки +- `git restore .` или `git checkout .` — отменить изменения в директории по индексу +- `git restore -S .` или `git reset .` — отменить изменения индекса по коммиту (отмена `git add .`) +- `git rm ` — удалить файл из индекса, чтобы перестать хранить его историю в репозитории +- `git show ` — показать содержимое коммита +- `git log --oneline --decorate --graph` — вывести историю коммитов от HEAD в виде дерева +- `git log --oneline --decorate --graph --all` — вывести историю всех коммитов в виде дерева +- `gitk` — открыть графическое представление репозитория +- `git clean` — удалить неотслеживаемые файлы из директории \ No newline at end of file diff --git a/fetch.md b/fetch.md new file mode 100644 index 00000000..5f6df9b8 --- /dev/null +++ b/fetch.md @@ -0,0 +1,5 @@ +## R1. Доступен fetch коммитов любого репозитория в любой момент +- `git remote -v` — вывести список удаленных репозиториев с их адресами +- `git remote add ` — добавить удаленный репозиторий с URL и дать ему указанное имя +- `git fetch` = `git fetch origin` — получить содержимое основного удаленного репозитория +- `git fetch --all` — получить содержимое всех удаленных репозиториев из списка \ No newline at end of file diff --git a/help.md b/help.md new file mode 100644 index 00000000..c7121118 --- /dev/null +++ b/help.md @@ -0,0 +1,28 @@ +## H1. Гибкое конфигурирование и качественная документация +### Гибкая настройка под любой процесс +- `git config -e --system` — редактировать настройки системы +- `git config -e --global` — редактировать настройки пользователя +- `git config -e` — редактировать настройки репозитория +- `git config --global user.name ""` — задать имя пользователя +- `git config --global user.email ""` — задать почту пользователя + +### Документация ко всем командам +- `git help` — список команд +- `git -h` — помощь по команде в терминале +- `git --help` — документация по команде в браузере + +### Алиасы для краткости команд +- `git config --global alias.it "!git init && git commit -m 'Initial commit' --allow-empty"` +- `git config --global alias.st "status -sb"` +- `git config --global alias.call "!git add . && git commit -m"` +- `git config --global alias.commend "commit --amend --no-edit"` +- `git config --global alias.graph "log --oneline --decorate --graph --all"` +- `git config --global alias.to "checkout"` +- `git config --global alias.pushup "push -u origin HEAD"` +- `git config --global alias.please "push --force-with-lease"` +- `git config --global alias.puff "pull --ff-only"` +- `git config --global alias.pure "pull --rebase --autostash"` +- `git config --global alias.undo "reset --soft HEAD^"` + +### Надо игнорировать все, кроме исходников +https://github.com/github/gitignore — .gitignore для разных языков diff --git a/index.html b/index.html new file mode 100644 index 00000000..82314269 --- /dev/null +++ b/index.html @@ -0,0 +1,91 @@ + + + + + + + + +
+ +
+

Принципы Git

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/init.md b/init.md new file mode 100644 index 00000000..38ff55bd --- /dev/null +++ b/init.md @@ -0,0 +1,4 @@ +## S1. Все локально +#### Все данные хранятся в локальных репозиториях, изменения между ними можно синхронизировать +- `git init` — создать пустой репозиторий +- `git clone ` — склонировать репозиторий в новую директорию diff --git a/merge.md b/merge.md new file mode 100644 index 00000000..663f9520 --- /dev/null +++ b/merge.md @@ -0,0 +1,6 @@ +## A1. Трехсторонний merge в три шага +#### Два состояния можно объединить через merge, mergetool и commit +#### Участвуют три стороны: current, incoming и base +- `git merge ` — объединить текущую ветку с другой +- `git mergetool` — разрешить имеющиеся конфликты +- `git merge --abort` — отменить слияние diff --git a/push.md b/push.md new file mode 100644 index 00000000..13108efd --- /dev/null +++ b/push.md @@ -0,0 +1,9 @@ +## R2. Удаленное изменение — это push +- `git push :` — добавить изменения из локальной ветки `` и переместить ветку `` удаленного репозитория +- `git push` = `git push origin HEAD` — добавить изменения из текущей локальной ветки и переместить соответствующую ветку удаленного репозитория +- `git push -f` — выполнить `push`, даже если удаленная ветка уже не является предком +- `git push --force-with-lease` — выполнить `push`, если является предком или удаленная ветка не сдвигалась (использовать вместо предыдущей команды) +- `git push -d ` — удалить ветку или тег в удаленном репозитории +- `git push tag ` — отправить тег в удаленный репозиторий +- `git push --tags` — отправить все локальные теги в удаленный репозиторий +- `git push --mirror` — выполнить агрессивный `push` для всех тегов, веток и HEAD, подходит для создания удаленной копии локального репозитория diff --git a/rebase.md b/rebase.md new file mode 100644 index 00000000..ccadb650 --- /dev/null +++ b/rebase.md @@ -0,0 +1,8 @@ +## A2. rebase, cherry-pick и amend, чтобы пересоздать историю +#### Нельзя переписать историю — можно создать новую +- `git commit --amend --no-edit` — заменить последний коммит ветки на отредактированный с дополнительными изменениями без изменения сообщения +- `git rebase ` — применить все коммиты от общего родителя до текущего к `` +- `git rebase -i ` — применить заново все коммиты, указав действие с каждым коммитом +- `git rebase --continue` — продолжить rebase после разрешения конфликтов +- `git rebase --abort` — отменить rabase +- `git cherry-pick ` — применить указанный коммит к HEAD diff --git a/reset.md b/reset.md new file mode 100644 index 00000000..403e25b4 --- /dev/null +++ b/reset.md @@ -0,0 +1,15 @@ +## A3. stash, reset, revert для управления изменениями +#### Изменения можно временно припрятать +#### Можно получить разницу между любыми коммитами +#### Коммит можно отменить другим коммитом +- `git stash` — сохранить все модифицированные файлы в виде набора изменений +- `git stash pop` — восстановить последний сохраненный набор изменений и удалить его из списка +- `git stash list` — показать список сохраненных наборов изменений +- `git reset --hard ` — переместить текущую ветку на ``, задать индекс и директорию согласно коммиту, устранив всю разницу +- `git reset --mixed ` — переместить текущую ветку на ``, задать индекс согласно коммиту, оставить разницу между исходным и новым состоянием в директории +- `git reset --soft ` — переместить текущую ветку на ``, не задавать индекс и директорию согласно коммиту, а оставить разницу между исходным и новым состоянием в индексе и директории +- `git reset --hard HEAD~1` — отменить последний коммит +- `git revert ` — создать коммит, отменяющий изменения из коммита +- `git diff []` — вывести разницу между двумя коммитами +- `git diff --name-status []` — список измененных файлов +- `git difftool []` - вывести разницу с помощью difftool из настроек diff --git a/run.cmd b/run.cmd new file mode 100644 index 00000000..384b1fa4 --- /dev/null +++ b/run.cmd @@ -0,0 +1,3 @@ +start npx http-server +timeout 10 +start http://127.0.0.1:8080/index.html diff --git a/styles/marked.css b/styles/marked.css new file mode 100644 index 00000000..a3cbcc1e --- /dev/null +++ b/styles/marked.css @@ -0,0 +1,695 @@ + @font-face { + font-family: octicons-link; + src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); + } + + .markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + color: #24292e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 10px; + line-height: 1.5; + word-wrap: break-word; + } + + .markdown-body .pl-c { + color: #6a737d; + } + + .markdown-body .pl-c1, + .markdown-body .pl-s .pl-v { + color: #005cc5; + } + + .markdown-body .pl-e, + .markdown-body .pl-en { + color: #6f42c1; + } + + .markdown-body .pl-smi, + .markdown-body .pl-s .pl-s1 { + color: #24292e; + } + + .markdown-body .pl-ent { + color: #22863a; + } + + .markdown-body .pl-k { + color: #d73a49; + } + + .markdown-body .pl-s, + .markdown-body .pl-pds, + .markdown-body .pl-s .pl-pse .pl-s1, + .markdown-body .pl-sr, + .markdown-body .pl-sr .pl-cce, + .markdown-body .pl-sr .pl-sre, + .markdown-body .pl-sr .pl-sra { + color: #032f62; + } + + .markdown-body .pl-v, + .markdown-body .pl-smw { + color: #e36209; + } + + .markdown-body .pl-bu { + color: #b31d28; + } + + .markdown-body .pl-ii { + color: #fafbfc; + background-color: #b31d28; + } + + .markdown-body .pl-c2 { + color: #fafbfc; + background-color: #d73a49; + } + + .markdown-body .pl-c2::before { + content: "^M"; + } + + .markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #22863a; + } + + .markdown-body .pl-ml { + color: #735c0f; + } + + .markdown-body .pl-mh, + .markdown-body .pl-mh .pl-en, + .markdown-body .pl-ms { + font-weight: bold; + color: #005cc5; + } + + .markdown-body .pl-mi { + font-style: italic; + color: #24292e; + } + + .markdown-body .pl-mb { + font-weight: bold; + color: #24292e; + } + + .markdown-body .pl-md { + color: #b31d28; + background-color: #ffeef0; + } + + .markdown-body .pl-mi1 { + color: #22863a; + background-color: #f0fff4; + } + + .markdown-body .pl-mc { + color: #e36209; + background-color: #ffebda; + } + + .markdown-body .pl-mi2 { + color: #f6f8fa; + background-color: #005cc5; + } + + .markdown-body .pl-mdr { + font-weight: bold; + color: #6f42c1; + } + + .markdown-body .pl-ba { + color: #586069; + } + + .markdown-body .pl-sg { + color: #959da5; + } + + .markdown-body .pl-corl { + text-decoration: underline; + color: #032f62; + } + + .markdown-body .octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; + } + + .markdown-body a { + background-color: transparent; + } + + .markdown-body a:active, + .markdown-body a:hover { + outline-width: 0; + } + + .markdown-body strong { + font-weight: inherit; + } + + .markdown-body strong { + font-weight: bolder; + } + + .markdown-body h1 { + font-size: 2em; + margin: 0.67em 0; + } + + .markdown-body img { + border-style: none; + } + + .markdown-body code, + .markdown-body kbd, + .markdown-body pre { + font-family: monospace, monospace; + font-size: 1em; + } + + .markdown-body hr { + box-sizing: content-box; + height: 0; + overflow: visible; + } + + .markdown-body input { + font: inherit; + margin: 0; + } + + .markdown-body input { + overflow: visible; + } + + .markdown-body [type="checkbox"] { + box-sizing: border-box; + padding: 0; + } + + .markdown-body * { + box-sizing: border-box; + } + + .markdown-body input { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + + .markdown-body a { + color: #0366d6; + text-decoration: none; + } + + .markdown-body a:hover { + text-decoration: underline; + } + + .markdown-body strong { + font-weight: 600; + } + + .markdown-body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid #dfe2e5; + } + + .markdown-body hr::before { + display: table; + content: ""; + } + + .markdown-body hr::after { + display: table; + clear: both; + content: ""; + } + + .markdown-body table { + border-spacing: 0; + border-collapse: collapse; + } + + .markdown-body td, + .markdown-body th { + padding: 0; + } + + .markdown-body h1, + .markdown-body h2, + .markdown-body h3, + .markdown-body h4, + .markdown-body h5, + .markdown-body h6 { + margin-top: 0; + margin-bottom: 0; + } + + .markdown-body h1 { + font-size: 32px; + font-weight: 600; + } + + .markdown-body h2 { + font-size: 24px; + font-weight: 600; + } + + .markdown-body h3 { + font-size: 20px; + font-weight: 600; + } + + .markdown-body h4 { + font-size: 16px; + font-weight: 600; + } + + .markdown-body h5 { + font-size: 14px; + font-weight: 600; + } + + .markdown-body h6 { + font-size: 12px; + font-weight: 600; + } + + .markdown-body p { + margin-top: 0; + margin-bottom: 10px; + } + + .markdown-body blockquote { + margin: 0; + } + + .markdown-body ul, + .markdown-body ol { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + + .markdown-body ol ol, + .markdown-body ul ol { + list-style-type: lower-roman; + } + + .markdown-body ul ul ol, + .markdown-body ul ol ol, + .markdown-body ol ul ol, + .markdown-body ol ol ol { + list-style-type: lower-alpha; + } + + .markdown-body dd { + margin-left: 0; + } + + .markdown-body code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; + } + + .markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; + } + + .markdown-body .octicon { + vertical-align: text-bottom; + } + + .markdown-body .pl-0 { + padding-left: 0 !important; + } + + .markdown-body .pl-1 { + padding-left: 4px !important; + } + + .markdown-body .pl-2 { + padding-left: 8px !important; + } + + .markdown-body .pl-3 { + padding-left: 16px !important; + } + + .markdown-body .pl-4 { + padding-left: 24px !important; + } + + .markdown-body .pl-5 { + padding-left: 32px !important; + } + + .markdown-body .pl-6 { + padding-left: 40px !important; + } + + .markdown-body::before { + display: table; + content: ""; + } + + .markdown-body::after { + display: table; + clear: both; + content: ""; + } + + .markdown-body>*:first-child { + margin-top: 0 !important; + } + + .markdown-body>*:last-child { + margin-bottom: 0 !important; + } + + .markdown-body a:not([href]) { + color: inherit; + text-decoration: none; + } + + .markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; + } + + .markdown-body .anchor:focus { + outline: none; + } + + .markdown-body p, + .markdown-body blockquote, + .markdown-body ul, + .markdown-body ol, + .markdown-body dl, + .markdown-body table, + .markdown-body pre { + margin-top: 0; + margin-bottom: 16px; + } + + .markdown-body hr { + height: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; + } + + .markdown-body blockquote { + padding: 0 1em; + color: #6a737d; + border-left: 0.25em solid #dfe2e5; + } + + .markdown-body blockquote>:first-child { + margin-top: 0; + } + + .markdown-body blockquote>:last-child { + margin-bottom: 0; + } + + .markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #c6cbd1; + border-bottom-color: #959da5; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #959da5; + } + + .markdown-body h1, + .markdown-body h2, + .markdown-body h3, + .markdown-body h4, + .markdown-body h5, + .markdown-body h6 { + margin-top: 6px; + margin-bottom: 6px; + font-weight: 600; + line-height: 1.25; + } + + .markdown-body h1 .octicon-link, + .markdown-body h2 .octicon-link, + .markdown-body h3 .octicon-link, + .markdown-body h4 .octicon-link, + .markdown-body h5 .octicon-link, + .markdown-body h6 .octicon-link { + color: #1b1f23; + vertical-align: middle; + visibility: hidden; + } + + .markdown-body h1:hover .anchor, + .markdown-body h2:hover .anchor, + .markdown-body h3:hover .anchor, + .markdown-body h4:hover .anchor, + .markdown-body h5:hover .anchor, + .markdown-body h6:hover .anchor { + text-decoration: none; + } + + .markdown-body h1:hover .anchor .octicon-link, + .markdown-body h2:hover .anchor .octicon-link, + .markdown-body h3:hover .anchor .octicon-link, + .markdown-body h4:hover .anchor .octicon-link, + .markdown-body h5:hover .anchor .octicon-link, + .markdown-body h6:hover .anchor .octicon-link { + visibility: visible; + } + + .markdown-body h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid #eaecef; + } + + .markdown-body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #eaecef; + } + + .markdown-body h3 { + font-size: 1.25em; + } + + .markdown-body h4 { + font-size: 1em; + } + + .markdown-body h5 { + font-size: 0.875em; + } + + .markdown-body h6 { + font-size: 0.85em; + color: #6a737d; + } + + .markdown-body ul, + .markdown-body ol { + padding-left: 2em; + } + + .markdown-body ul ul, + .markdown-body ul ol, + .markdown-body ol ol, + .markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; + } + + .markdown-body li { + word-wrap: break-all; + } + + .markdown-body li>p { + margin-top: 16px; + } + + .markdown-body li+li { + margin-top: 0.25em; + } + + .markdown-body dl { + padding: 0; + } + + .markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: 600; + } + + .markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; + } + + .markdown-body table { + display: block; + width: 100%; + overflow: auto; + } + + .markdown-body table th { + font-weight: 600; + } + + .markdown-body table th, + .markdown-body table td { + padding: 6px 13px; + border: 1px solid #dfe2e5; + } + + .markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; + } + + .markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; + } + + .markdown-body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; + } + + .markdown-body img[align=right] { + padding-left: 20px; + } + + .markdown-body img[align=left] { + padding-right: 20px; + } + + .markdown-body code { + padding: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: rgba(27,31,35,0.05); + border-radius: 3px; + } + + .markdown-body pre { + word-wrap: normal; + } + + .markdown-body pre>code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; + } + + .markdown-body .highlight { + margin-bottom: 16px; + } + + .markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; + } + + .markdown-body .highlight pre, + .markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f6f8fa; + border-radius: 3px; + } + + .markdown-body pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; + } + + .markdown-body .full-commit .btn-outline:not(:disabled):hover { + color: #005cc5; + border-color: #005cc5; + } + + .markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: solid 1px #d1d5da; + border-bottom-color: #c6cbd1; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #c6cbd1; + } + + .markdown-body :checked+.radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; + } + + .markdown-body .task-list-item { + list-style-type: none; + } + + .markdown-body .task-list-item+.task-list-item { + margin-top: 3px; + } + + .markdown-body .task-list-item input { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; + } + + .markdown-body hr { + border-bottom-color: #eee; + } \ No newline at end of file diff --git a/styles/prism.css b/styles/prism.css new file mode 100644 index 00000000..c217eccf --- /dev/null +++ b/styles/prism.css @@ -0,0 +1,139 @@ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + + code[class*="language-"], + pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + } + + pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, + code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; + } + + pre[class*="language-"]::selection, pre[class*="language-"] ::selection, + code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; + } + + @media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } + } + + /* Code blocks */ + pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + } + + :not(pre) > code[class*="language-"], + pre[class*="language-"] { + background: #f5f2f0; + } + + /* Inline code */ + :not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; + } + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: slategray; + } + + .token.punctuation { + color: #999; + } + + .namespace { + opacity: .7; + } + + .token.property, + .token.tag, + .token.boolean, + .token.number, + .token.constant, + .token.symbol, + .token.deleted { + color: #905; + } + + .token.selector, + .token.attr-name, + .token.string, + .token.char, + .token.builtin, + .token.inserted { + color: #690; + } + + .token.operator, + .token.entity, + .token.url, + .language-css .token.string, + .style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); + } + + .token.atrule, + .token.attr-value, + .token.keyword { + color: #07a; + } + + .token.function, + .token.class-name { + color: #DD4A68; + } + + .token.regex, + .token.important, + .token.variable { + color: #e90; + } + + .token.important, + .token.bold { + font-weight: bold; + } + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } \ No newline at end of file diff --git a/upstream.md b/upstream.md new file mode 100644 index 00000000..e0276220 --- /dev/null +++ b/upstream.md @@ -0,0 +1,10 @@ +## R3. Явное сопоставление локальных веток с upstream +- `git branch -vv` — вывести список локальных веток с указанием привязанных к ним upstream-веток +- `git branch -u []` — задать upstream-ветку для указанной или текущей ветки +- `git push -u origin HEAD` — создать удаленную ветку, соответствующую локальной и установить между ними upstream-связь, затем добавить изменения из локальной ветки в удаленный репозиторий +- `git checkout ` — создать локальную ветку, соответствующую удаленной и установить между ними upstream-связь, затем переместить HEAD на нее +- `git pull` = `git pull origin` — получить содержимое основного удаленного репозитория и влить изменения из удаленной ветки в соответствующую локальную ветку +- `git pull --ff-only` — получить содержимое, а затем влить, если возможен fast-forward merge +- `git pull --rebase` — получить содержимое и выполнить rebase локальной ветки на удаленную ветку +- `git pull --rebase --autostash` — сохранить локальные изменения, получить содержимое, выполнить rebase локальной ветки на удаленную ветку, применить сохраненные изменения +- `git config --global push.default simple` — задать simple-режим действий с upstream-связями при push. Это режим по умолчанию в Git 2.0 и выше