Шпаргалка по самым основным командам Git которыми нам придется чаще всего пользоваться.
Настраиваем пользователя и почту от имени которых будем коммитить
git config --global user.name "Vasja Pupkin"
Создание репозитория
git init git add . #обязательно точка а не звездочка git commit -m "first commit"
Работа с git
git add *.html #Добавление файлов по маске git add * #Добавление всех новых и измененных файлов git add FILENAME #Добавление конкретного файла FILENAME
git commit -a -m "Комментарий к коммиту"
тут следует знать, что -a - ключ, означающий что надо закоммитить все отслеживаемые файлы, поэтому если для текущего коммита новые файлы в проект не добавлялись, то коммитить можно сразу этой командой, опуская git add
Удалить файл
git rm FILENAME
или если хотим удалить несколько файлов из репозитория, не удаляя потом каждый отдельно из гит, выполняем команду
git add -u
Статус и история коммитов
git status git log
Работа с удаленным репозиторием (на примере Bitbucket)
Добавляем удаленный репозиторий (предварительно создав его на самом сервисе) и заливаем на него наш проект
git remote add origin https://vasyapup@bitbucket.org/vasyapup/repositoryName.git git push -u origin --all
git push -u origin master #Заливаем коммиты на удаленный репозиторий git pull origin master #Скачиваем изменения с удаленного репозитория
Отмена коммитов
если они еще не опубликованы
git commit -a --amend #добавить к последнему коммиту новые изменения git reset --soft HEAD^ #отменить последний коммит (но не изменения, которые вы внесли, они сохранятся)
если уже опубликовали
git revert <commit> #где <commit> - имя коммита, например 50ab40f. #Не забываем потом сделать git push
Ну и еще некоторые варианты отмен для всяких случаев
Отменить git push --force
:
git push --force origin master Counting objects: 3, done. ... 12345..67890 master -> master
видим, что до пуша последний коммит в удалённом мастере был 12345, а после пуша последним стал коммит 67890
откатываем:
git push -f origin master #или можно так git push origin +master
Отменить git reset --hard
(только для закоммиченных изменений)
Ситуация - работаем в локальном репозитории, удаленного нету или ничего не запушено.
Делаем git reset --hard HEAD~3
и понимаем что удалили нужный коммит.
смотрим reflog:
git reflog ced7031 HEAD@{1} commit: tour catalog fix a644359 HEAD@{2} commit: breadcrumbs hide on some pages 15f01c8 HEAD@{3} commit: page special offer and some other fixes
смотрим точку к которой нам надо вернуться
HEAD is now at ced7031 tour catalog fix
тут {1} означает вернуть файлы в том виде в котором они были одно действие (в рефлоге) назад
а можно делать и так
Таким способом можно так же откатывать git rebase -i
Отмена локальных изменений в файле до индексации (до git add)
Переключаемся на ветку master
git checkout master
надо откатить изменения в файле vasja.php
смотрим статус
git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: vasja.php # no changes added to commit (use "git add" and/or "git commit -a")
видим, что файл vasja.php изменен, но еще не проиндексирован
отменяем:
git checkout vasja.php git status # On branch master nothing to commit (working directory clean)