Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Main #2

Open
wants to merge 20 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Коллекция полезных .gitignore от GitHub: https://github.com/github/gitignore

# Игнорирование всех markdown-файлов:
*.md

# Исключение из игнорирования конкретного файла:
!init.md
17 changes: 17 additions & 0 deletions branch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## S3. Манипуляции через ссылки, нет ссылки — в мусор
#### HEAD — текущая ссылка, tag — фиксированная ссылка, branch — движущаяся за HEAD ссылка
#### checkout — перемещение на ветку или коммит, reset — перемещение с веткой на коммит
#### Видно то, на что есть ссылки, остальное — мусор
- `git tag` — вывести список тегов
- `git tag <tagname>` — создать тег
- `git branch` — вывести список локальных веток
- `git branch -av` — вывести список локальных и удаленных веток
- `git branch <branchname>` — создать ветку
- `git branch -d <branchname>` — удалить ветку
- `git checkout <commit>` или `git switch --detach <commit>` — переместить HEAD на коммит, причем получится detached HEAD
- `git checkout <branch>`или `git switch <branch>` — переместить HEAD на ветку
- `git checkout -b <new_branch>` или `git switch -c <new_branch>` — создать ветку и перейти на нее
- `git reset --hard <commit>` — переместить HEAD и текущую ветку на `<commit>`
- `git reflog show <ref>` — показать лог действий со ссылкой
- `git reflog` = `git reflog show HEAD` — показать лог действий с HEAD
- `git gc` — удалить ненужные файлы и оптимизировать локальный репозиторий
20 changes: 20 additions & 0 deletions commit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## S2. Хранятся состояния директории, постепенная сборка коммита
#### Хранятся файлы, разница вычисляется на лету
#### Commit index для сборки коммита
- `git add .` — добавить все измененные файлы в индекс
- `git commit -m <msg>` — записать изменения из индекса в репозиторий
- `git status -sb` — вывести состояние директории и индекса кратко с указанием текущей ветки
- `git restore .` или `git checkout .` — отменить изменения в директории по индексу
- `git restore -S .` или `git reset .` — отменить изменения индекса по коммиту (отмена `git add .`)
- `git rm <filename>` — удалить файл из индекса, чтобы перестать хранить его историю в репозитории
- `git show <commit>` — показать содержимое коммита
- `git log --oneline --decorate --graph` — вывести историю коммитов от HEAD в виде дерева
- `git log --oneline --decorate --graph --all` — вывести историю всех коммитов в виде дерева
- `gitk` — открыть графическое представление репозитория
- `git clean` — удалить неотслеживаемые файлы из директории
- `git add .` — добавить все измененные файлы в индекс
- `git commit -m <msg>` — записать изменения из индекса в репозиторий
- `git status -sb` — вывести состояние директории и индекса кратко с указанием текущей ветки
- `git restore .` или `git checkout .` — отменить изменения в директории по индексу
- `git restore -S .` или `git reset .` — отменить изменения индекса по коммиту (отмена `git add .`)
- `git rm <filename>` — удалить файл из индекса, чтобы перестать хранить его историю в репозитории
4 changes: 4 additions & 0 deletions init.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## S1. Все локально
#### Все данные хранятся в локальных репозиториях, изменения между ними можно синхронизировать
- `git init` — создать пустой репозиторий
- `git clone <url>` — склонировать репозиторий в новую директорию
6 changes: 6 additions & 0 deletions merge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## A1. Трехсторонний merge в три шага
#### Два состояния можно объединить через merge, mergetool и commit
#### Участвуют три стороны: current, incoming и base
- `git merge <commit>` — объединить текущую ветку с другой
- `git mergetool` — разрешить имеющиеся конфликты
- `git merge --abort` — отменить слияние
8 changes: 8 additions & 0 deletions rebase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## A2. rebase, cherry-pick и amend, чтобы пересоздать историю
#### Нельзя переписать историю — можно создать новую
- `git commit --amend --no-edit` — заменить последний коммит ветки на отредактированный с дополнительными изменениями без изменения сообщения
- `git rebase <upstream>` — применить все коммиты от общего родителя до текущего к `<upstream>`
- `git rebase -i <upstream>` — применить заново все коммиты, указав действие с каждым коммитом
- `git rebase --continue` — продолжить rebase после разрешения конфликтов
- `git rebase --abort` — отменить rabase
- `git cherry-pick <commit>` — применить указанный коммит к HEAD
Comment on lines +7 to +8
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK