Уже давненько пользуюсь ГИТом, но некоторые команды используются крайне редко и каждый раз приходится вспоминать как то или иное действие сделать правильно. По-этому и решил сделать нечто вроде шпаргалки + может еще кому-то поможет.
Клонирование репозитория
Обычно, если мы находимся в папке http, и выполним команду
Code:
git clone https://github.com/Name/try_git.git
то репозиторий скопируется в папку http/try_git, что не всегда удобно, ведь обычно мы хотим склонировать репозиторий именно в ту папку в которой находимся. Для этого надо просто добавить точку в конце команды
Code:
git clone https://github.com/Name/try_git.git .
Алиасы и шорткаты для GIT
Файл gitconfig (обычно в папке .git)
Code:
[alias]
co = checkout
ci = commit
st = status
br = branch
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
type = cat-file -t
dump = cat-file -p
Как видите мы добавили в наш конфиг секцию alias и задали в ней список коротких команд. Например вместо checkout мы теперь можем писать co.
Коммит и отмена изменений
Для того, чтобы закоммитить изменения на сервер надо сделать несколько шагов
Code:
# Добавить нужные файлы в индекс
git add .
# Сделать коммит (в гите это локально)
git commit -m 'Test commit'
# Отправить это все на сервер (в скобках не обязательные параметры)
git push [origin master]
Если же нам надо забрать изменения с сервера
Code:
git pull
Отменить коммит(fdd46458a9 - хэш коммита)
Code:
git revert fdd46458a9
Перенести только один коммит из одной ветки в другую
Code:
git cherry-pick BUG_FIX_TAG
Эта команда перенесет коммит и сразу сделает новый коммит с этими изменениями
Code:
git cherry-pick BUG_FIX_TAG -n
А тут ключ -n указывает что изменения надо лишь перенести, но не делать нового коммита
Еще один вариант отмены изменений
Если мы отменим коммит командой revert, то из истории коммитов он не пропадет, а добавиться еще один коммит (Revert: commit_name).
Code:
git revert fdd46458a9
# Не смотря на то что мы откатили коммит, в истории он остался
git hist
Если же нам необходимо удалить коммит и из истории тоже, мы можем сделать так
Code:
# В отличии от revert тут мы указываем хэш не того коммита, который хотим отменить, а того, к которому откатываемся
git reset --hard fdd46458a9
# Так мы не увидим в истории сброшенные коммиты
git hist
# Тем не менее так они все равно видны
git hist --all
Отмена изменений в конкретном файле
Допустим вы изменили какой-то файл и еще не коммитили его, но уже поняли что вам надо отменить изменения. В таком случае можно выполнить следующую команду.
Code:
git checkout -- <file>
Ветки
Часто бывает нужно создать ветку(например для версии CMS)
Code:
git checkout -b new_branch
Флаг -b указывает, что сразу после создание ветки мы переключимся на нее. Эта команда эквивалентна
Code:
git branch new_branch
git checkout new_branch
Буду только рад, если другие укажут на мои возможные ошибки
Eсть такая прога от Atlassian называется SourseTree (тут можно скачать и почитать о ней)
В общем знание английского чуть чуть и можно не вспоминать о командах git. Лично я всегда с ней.
Работаю с git.
Пробую делать откат до комита, но не получается.
Создаю репозиторий. Вношу изменения на локальном сервере,пишу git add. потом git commit
Вношу изменения специально, чтобы потом их убрать (втестовом режиме).
Пытаюсь сделать откат,
пишу по-разному:
git reset--hard HEAD
git reset--hard <commit>
Откат неделается
synthaxiserrow unexpected token near 'newline'
После git reset--hard
вроде сделался откат
пишет
head now at... (то, что было в коменте моего предыдущего коммита)
захожу через браузер на сайт, отката нет (ни в базе ни вфайлах сайта)
денвер перезапускаю на всякий случай, без результата
что не так?
может его еще вытянуть как-то надо?