
Шпаргалка по Git
Система управления версиями Git довольно хороший, полезный инструмент, эволюционировавший от Subversion, CVS, и других старых систем управления версиями. Она особенно хорошо подходит для распределенной разработки, так как вы можете работать без подключения к центрального серверу.
Git прекрасно документирован, поэтому вы всегда можете найти ответы на возникающие у вас вопросы. Если у вас возник вопрос, начните поиск ответа с документации, прежде чем делать искать в сети — это быстрее, и, кроме того, вы получите более полные ответы.
Мы, в свою очередь, хотим подарить вам небольшую шпаргалку, которая отражает использование Git в типичном цикл разработки.
Создание репозитория
1 2 3 4 5 6 7 8 |
# создаем новый репозиторий git init # клонирует в текущю папку существующий репозиторий, достпный по url git clone [url] # например, клонируем локально весь удалённый репозиторий jquery git clone https://github.com/jquery/jquery |
Ветви и тэги
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Выводит список всех ветвей с комментарием посленего коммита в каждой ветке git branch –av # Переключение указателя HEAD на указанную ветку git checkout [ветка] # Создает новую ветку на основе текущего положения указателя HEAD git branch [новая-ветка] # Создаёт новую отслеживаемую ветку на основе ветки в удаленном репозитории git checkout --track [удаленный_репозиторий/ветка] # Удаляет локальную ветку git branch -d [ветка] # Помечает тегом текущий коммит git tag [имя-тэга] |
Локальные изменения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Добавляет указанный локально измененный файл в следующий коммит git add [имя_файла] # Исключает указанный файл из следующего коммита git rm [имя_файла] # Добавляет в следующий коммит только изменившуюся часть указанного файла # См. видео http://johnkary.net/blog/git-add-p-the-most-powerful-git-feature-youre-not-using-yet/ git add -p [имя_файла] # Добавляет в следующий коммит все изменившиеся отслеживаемые локальные файлы git commit –a git commit -am "Комментарий к коммиту" # Собственно, выполняет коммит - переносит изменения в локальные репозиторий git commit git commit -m "Комментарий к коммиту" # Указанный файл будет удалён из следующего коммита, однако, содержимое файла останется не тронутым git reset [имя_файла] |
История коммитов
1 2 3 4 5 6 7 8 |
# Показывает все коммиты, начиная с последнего git log # Показывает историю изменений только для указанного файла git log -p [имя_файла] # Показывает, автора изменений каждой строки в файле, время изменения и идентификатор коммита git blame -c [имя_файла] |
Работа с удалённым репозиторием
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Выводит список всех удалённых репозиториев git remote -v # Добавляет новый удалённый репозиторий, доступный по [url] с указанным локальным именем git remote add [локальное_имя] [url] # Загружает все изменения с удалённого реопзитория [remote] в локальный репозиторий, но, изменения не применяются к локальным файлам. Загруженные изменения остаются только в локальном репозитории git fetch [remote] # Загружает все изменения с удалённого репозитория [remote] в локальный репозиторий и применяет скачанные изменения к локальным файлам в указанной ветке git pull [remote] [ветка] # Загружает все изменения из локального репозитория в указанную ветвь удалённого репозитория [remote] git push [remote] [ветка] # Удаляет указанную ветку в удалённом репозитории [remote] git branch -dr [remote/ветка] # Публикует локальные тэги в удалённом репозитории git push --tags |
Merge и Rebase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Объединяет указанную [ветку] в ту, на котороую в данный момент указывает HEAD git merge [веткf] # Переносит ваш текущий HEAD на указанную [ветку] git rebase [ветка] # Прерывает перенос git rebase –abort # Продолжает перенос, прерванный для разрешения конфликтов слияния git rebase –continue # Использует указанное в настройках git приложение для разрешения конфликтов слияния git mergetool # Если вы самомстоятельно устранили возникшие конфликты слияния, вам необходимо использовать следующие команды чтобы пометить файлы как "исправленные" git add <исправленный-файл> git rm <исправленный-файл> |
Отмена изменений
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Отменяет все изменения, внесенные в локальные файлы и возвращает из к состоянию, которое было после последнего коммита git reset --hard HEAD # Отменяет все изменения, внесенные в указанный локальный [файл] git checkout HEAD [файл] # Отменяет изменения, которые внеc указанный [коммит], создавая новый коммит, выполняющий изменения, обратные изменениям [коммит]а git revert [коммит] # Изменяет файлы в текущей ветке таким образом, чтобы были учтены только изменения, внесенные указанным [коммитом]. Все изменения, сделанные после указаннного [коммита] будут потеряны git reset --hard [коммит] # Изменяет файлы в текущей ветке таким образом, чтобы были учтены только изменения, внесенные предпоследним [коммитом]. Все изменения в файлах, не добавленных в последний коммит, сохраняются. git reset [коммит] # Изменяет файлы в текущей ветке таким образом, чтобы были учтены только изменения, внесенные предпоследним [коммитом]. Все изменения в файла, добавленных в последний коммит, сохраняются. git reset --keep [commit] |
Источник: www.codementor.io