> For the complete documentation index, see [llms.txt](https://daymonri.gitbook.io/techwritersummary/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://daymonri.gitbook.io/techwritersummary/git/komandy-git.md).

# Команды Git

### Конфигурация

`git config --global user.name "[name]"` – установить имя, которое будет прикрепляться к коммиту.

`git config --global user.email "[email address]"` – установить email, который будет прикрепляться к коммиту.

### Создание репозиториев

`git init [project-name]` – создать новый локальный репозиторий с заданным именем.

`git clone [url]` – загрузить проект и его полную историю изменений.

### Работа с файлами

`git rm [file]` – удалить файл из рабочей директории и добавить в индекс информацию об удалении.

`git rm --cached [file]` – удалить файл из репозитория, но сохранить его локально.

### Работа с изменениями <a href="#toc171978417" id="toc171978417"></a>

`git status` – полный список изменений файлов, ожидающих коммита (`-s` – краткий вид изменений)

`git diff` – показать изменения в файлах, которые еще не были добавлены в индекс коммита (staged).

`git add [file]` – сделать указанный файл готовым для коммита.

`git add .` – сделать все измененные файлы готовыми для коммита.

`git add '*.txt'` – добавить только файлы, соответствующие указанному выражению.

`git diff --staged` – показать что было добавленно в индекс с помощью `git add`, но еще не было закоммиченно.

`git diff HEAD` – показать что изменилось с последнего коммита.

`git diff [branch]` – сравнить текущую ветку с заданной.

`git difftool -d master..` – показать изменения, сделанные в текущей ветке.

`git diff --stat` – показать статистику какие файлы были изменены и как.

`git reset [file]` – убрать файлы из индекса коммита (изменения не теряются).

`git commit` – записать изменения в репозиторий. для написания сообщения откроется назначенный редактор.

`git commit -m "[descriptive message]"` – записать изменения с заданным сообщением.

`git commit --amend` – добавить изменения к последнему коммиту.

### Работа с ветками <a href="#toc171978418" id="toc171978418"></a>

`git branch` – список всех локальных веток в текущей директории.

`git branch [branch-name]` – создать новую ветку.

`git checkout [branch-name]` – переключиться на указанную ветку и обновить рабочую директорию.

`git checkout -b <name> <remote>/<branch>` – переключиться на удаленную ветку.

`git checkout [filename]` – вернуть файл в первоначальное состояние если он еще не был добавлен в индекс коммита.

`git merge [branch]` – соединить изменения в текущей ветке с изменениями из заданной.

`git branch -a` – посмотреть полный список локальных и удаленных веток.

`git branch -d [branch]` – удалить заданную ветку.

`git branch -D [branch]` – принудительно удалить заданную ветку, игнорируя ошибки.

`git branch -m <oldname> <newname>` – переименовать ветку.

### Просмотр истории <a href="#toc171978419" id="toc171978419"></a>

`git log` – список изменения текущей ветки.

`git log --pretty=format:"%h %s" --graph` – изменение вида отображения истории изменений.

`git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit` – посмотреть над чем работал заданный пользователь последнюю неделю.

`git log --no-merges master..` – посмотреть историю изменений только для текущей ветки.

`git show [commit]` – показать метадату и изменения в заданном коммите.

`git show [branch]:[file]` – посмотреть на файл в другой ветке, не переключаясь на неё.

### Отмена коммитов <a href="#toc171978420" id="toc171978420"></a>

`git reset` – убрать изменения из индекса коммита, сами изменения останутся.

`git reset [commit/tag]` – отменить все коммиты после указанного коммита, изменения будут сохранены локально.

`git reset --hard [commit]` – принудительно вернутся к указанному коммиту, не сохраняя историю и изменения.

### Синхронизация изменений <a href="#toc171978421" id="toc171978421"></a>

`git fetch [bookmark]` – загрузить всю историю с заданного удаленного репозитория.

`git push` – запушить текущую ветку в удаленную ветку.

`git push [remote] [branch]` – запушить ветку в указанный репозиторий и удаленную ветку.

`git pull` – загрузить историю и изменения удаленной ветки и произвести слияние с текущей веткой.

`git pull [remote][branch]` – указать конкретную удаленную ветку для слияния.

`git remote` – посмотреть список доступных удаленных репозиториев.

`git remote add [remote][url]` – добавить новый удаленный репозиторий.
