Инструменты пользователя

Инструменты сайта


git._shpargalka

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
git._shpargalka [2017/01/08 14:52] – [История] daniilgit._shpargalka [2020/07/12 20:18] (текущий) daniil
Строка 11: Строка 11:
 git <verb> --help git <verb> --help
 man git-<verb> man git-<verb>
-</code> 
- 
----- 
- 
-===== Настройка ===== 
- 
-==== Конфигурационные файлы ==== 
-Настройки на каждом последующем уровне подменяют настройки из предыдущих уровней. 
- 
-^ Конфигурационный файл ^ Описание ^ 
-| **%%/etc/gitconfig%%** | Содержит значения, общие для всех пользователей системы и для всех их репозиториев. Если при запуске **git config** указать параметр **%%--system%%**, то параметры будут читаться и сохраняться именно в этот файл. | 
-| **%%~/.gitconfig%%** \\ //или// \\ **%%~/.config/git/config%%** | Xранит настройки конкретного пользователя. Этот файл используется при указании параметра **%%--global%%** | 
-| **%%.git/config%%** | Конфигурационный файл в каталоге Git'а в том репозитории, где вы находитесь в данный момент. Эти параметры действуют только для данного конкретного репозитория. Настройки на каждом следующем уровне подменяют настройки из предыдущих уровней, то есть значения в **.git/config** перекрывают соответствующие значения в **%%/etc/gitconfig%%**. | 
-==== Задать имя контактный ящик ==== 
- 
-<code bash> 
-git config --global user.name "John Doe" 
-git config --global user.email johndoe@example.com 
-</code> 
- 
-==== Выбор редактора по умолчанию ==== 
- 
-<code bash> 
-git config --global core.editor vim      # Vim 
-git config --global core.editor emacs    # Emacs 
-git config --global core.editor nano     # Nano 
-</code> 
- 
-==== Алиасы ==== 
- 
-=== Поддержка цветов === 
- 
-<code bash> 
-git config --global color.branch auto 
-git config --global color.diff auto 
-git config --global color.interactive auto 
-git config --global color.status auto 
-</code> 
- 
-=== Псевдонимы для команд Git === 
- 
-<code bash> 
-git config --global alias.co checkout 
-git config --global alias.ci commit 
-git config --global alias.st status 
-git config --global alias.br branch 
-git config --global alias.type cat-file -t 
-git config --global alias.dump cat-file -p 
-</code> 
- 
-==== Просмотр существующих настроек ==== 
- 
-<code bash> 
-git config --list            # Всех (глобальных, системных и локальных) 
-git config --local --list    # Локальных для определенного проекта 
-git config --system --list   # Системных 
 </code> </code>
  
Строка 86: Строка 30:
 git add .       # Индексировать рекурсивно все данные в каталоге git add .       # Индексировать рекурсивно все данные в каталоге
 git commit      # Создать первый commit (снимок) git commit      # Создать первый commit (снимок)
-</code> 
- 
- 
----- 
- 
-===== Клонирование репозитория ===== 
- 
-Клонирование выполняется командой ''git clone [url]'' . Пример клонирования репозитория библиотеки libgit2: 
-<code bash> 
-git clone https://github.com/libgit2/libgit2 
-</code> 
-В результате будет создана директория libgit2, поддиректория .git и загружены все данные для текущего репозитория. 
-\\ 
-Для клонирования репозитория в каталог с заданным именем, необходимо данное имя задать после URL: 
- 
-<code bash> 
-git clone https://github.com/libgit2/libgit2 mylibgit 
-</code> 
- 
-==== Пример работы с другими транспортными протоколами ==== 
- 
-<code bash> 
-git clone ssh://user@somehost:port/~user/repository 
-git clone git://user@somehost:port/~user/repository/project.git 
-git clone http://user@somehost:port/~user/repository/project.git 
-git clone file:///home/username/project myrepo 
- 
-# git with github 
-git clone git@github.com:user/project.git                 # клонировать удаленный репозиторий в одноименную папку 
-git clone git@github.com:user/project.git foldername      # клонировать удаленный репозиторий в папку «foldername» 
-git clone git@github.com:user/project.git .               # клонировать репозиторий в текущую папку 
 </code> </code>
  
Строка 143: Строка 56:
 Шаблон игнорируемых файлов задается в **''.gitignore''** или **''.git/info/exclude''** . Пример содержимого: Шаблон игнорируемых файлов задается в **''.gitignore''** или **''.git/info/exclude''** . Пример содержимого:
 <code bash> <code bash>
-# Все файлы, которые заканчиваются на .o или .a +*.[oa]        # Все файлы, которые заканчиваются на .o или .a 
-*.[oa]+!lib.a        # Однако НЕ игнорировать файл lib.a 
 +*~            # Всё, что заканчивается на ~ 
 +/TODO         # Игнорировать файл TODO, однако НЕ каталог TODO 
 +build/        # Игнорировать все файлы в каталоге build/ 
 +doc/*.txt     # Игнорировать, например, doc/notes.txt, но не doc/server/arch.txt 
 +doc/**/*.txt  # Игнорировать все .txt файлы во всех вложенных в doc/ каталогах 
 +</code>
  
-# Однако НЕ игнорировать файл lib.a 
-!lib.a 
- 
-# Всё, что заканчивается на ~ 
-*~ 
- 
-# Игнорировать файл TODO, однако НЕ каталог TODO 
-/TODO 
- 
-# Игнорировать все файлы в каталоге build/ 
-build/ 
- 
-# Игнорировать, например, doc/notes.txt, но не doc/server/arch.txt 
-doc/*.txt 
- 
-# Игнорировать все .txt файлы во всех вложенных в doc/ каталогах 
-doc/**/*.txt 
-</code> 
 <WRAP center round info 100%> <WRAP center round info 100%>
 При этом помним: При этом помним:
Строка 249: Строка 150:
  
 <code bash> <code bash>
-git reset --hard <hash>+git reset --hard <hash>    # Удаление коммита по hash-коду. Все изменения в нём будут утеряны. 
 +git reset --hard HEAD~1    # Удаление последнего коммита. Все изменения в последнем коммите будут утеряны.
 </code> </code>
  
Строка 276: Строка 178:
 ---- ----
  
-===== Отмена изменений =====+===== Операции отмены =====
  
-**Возврат к сохранённому состоянию:**+==== Изменить последний коммит ==== 
 + 
 +Изменить последний коммит можно с помощью ключа **''%%--amend%%''**. \\ 
 +Пример добавления файла: 
 +<code bash> 
 +git commit -m 'initial commit' 
 +git add forgotten_file 
 +git commit --amend 
 +</code> 
 + 
 +Для изменения комментария к коммиту, при условии, что //**ещё не было внесено правок в индексируемые файлы**//, достаточно выполнить
 <code bash> <code bash>
-git checkout -- file.txt  # Отмена изменений файла (до внесения файла в коммит) +git commit --amend
-git commit --amend        # Изменение комментария к последнему комииту, но только в том случае,  +
-                          # если после последнего коммита не было ни каких изменений в рабочем каталоге +
-git reset HEAD <file>     # Отмена индексации файла (исключение из индекса) +
-git reset --hard HEAD~1   # Удаление последнего коммита. Все изменения которые были в последнем коммите будут утеряны.+
 </code> </code>
 +
 +==== Отмена подготовки файла ====
 +Ситуация: есть 2 файла, добавленных в индекс. Необходимо закоммитить вначале изменения одного файла, затем второго.
 +
 +<code bash>
 +git reset HEAD <filename_two>
 +git commit -m 'Commiting is first file'
 +git add <filename_two>
 +git commit -m 'Commiting is second file '
 +</code>
 +
 +==== Отмена изменения измененного файла ====
 +
 +Вернуть файл **filename** к состоянию из последнего коммита.
 +
 +<code bash>
 +git checkout -- filename
 +</code>
 +При этом помним: всё что, не коммитим и теряем, вероятней всего теряем безвозвратно.
  
 ---- ----
Строка 328: Строка 255:
 git log -2 --stat            # Вывод краткой статистики по 2 последним коммитам git log -2 --stat            # Вывод краткой статистики по 2 последним коммитам
 git log --pretty=oneline     # И очень полезный ключ --pretty (позволяет изменить формат вывода лога) git log --pretty=oneline     # И очень полезный ключ --pretty (позволяет изменить формат вывода лога)
 +
 git log --since=2.weeks      # Cписок коммитов, сделанных за последние две недели git log --since=2.weeks      # Cписок коммитов, сделанных за последние две недели
 +git log --after="2017-01-01" # after является синонимом since
 git log --until=2.weeks      # Список коммитов, сделанных ранее двух недель назад git log --until=2.weeks      # Список коммитов, сделанных ранее двух недель назад
 +git log --before="2017-01-01"# before является синонимом until
 +
 +git log --author="Daniil Nareyko"    # Вывести только коммиты, которые были сделаны указанным пользователем
 git log -S<stirng>           # Показать только коммиты, в которых изменение в коде повлекло за собой добавление ил удаление указанной строки git log -S<stirng>           # Показать только коммиты, в которых изменение в коде повлекло за собой добавление ил удаление указанной строки
 git log --oneline            # Список коммитов с хэшем (короткое число) git log --oneline            # Список коммитов с хэшем (короткое число)
Строка 378: Строка 310:
 git tag                                # Посмотреть все (перечисляет в алфавитном порядке) git tag                                # Посмотреть все (перечисляет в алфавитном порядке)
 git tag -l 'v1.4.2.*'                  # Посмотреть попадающие под маску тэги git tag -l 'v1.4.2.*'                  # Посмотреть попадающие под маску тэги
-git tag -a v1.4 -m 'my version 1.4'    # Создать метку на текущем коммите (ключ -а) с меточным сообщением (ключ -m)+git tag -a v1.4 -m 'my version 1.4'    # Создать аннотированную метку на текущем коммите (ключ -а) с меточным сообщением (ключ -m
 +git tag -a v1.4 -m 'my v1.4' 98fced0   # То же самое, но для определённого коммита (98fced0)
 git tag <имя_метки>                    # Создание легковесной метки на текущем коммите git tag <имя_метки>                    # Создание легковесной метки на текущем коммите
-git show <tag>+git show <tag>                         # Посмотреть данные аннотированной метки вместе с коммитом, который был помечен
 git checkout <tag>                   # Добавить тэг для предыдущего коммита git checkout <tag>                   # Добавить тэг для предыдущего коммита
 git checkout <tag>~1                   # Добавить тэг для предыдущего коммита  git checkout <tag>~1                   # Добавить тэг для предыдущего коммита 
 git tag -d <tag>                       # Удалить тэг git tag -d <tag>                       # Удалить тэг
 +git push origin v1.4                   # Отправить метку на общий сервер (по умолчанию git push метки не отправляет)
 +git push origin --tags                 # Отправить все метки на общий сервер
 </code> </code>
  
 ---- ----
  
git._shpargalka.1483876320.txt.gz · Последнее изменение: 2017/01/08 00:00 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki