Установка git
sudo apt-get install git
Начало работы с git
Сперва нужно настроить git, установив user.name и user.email. Приятно знать, от кого коммит. Таким образом команда git blame и ваша IDE будут подсказывать имя того, кто закоммитил ту или иную строчку.
git config --global --add user.name 'Name Surname' git config --global --add user.email 'your@mail.here'
Эти команды автоматически внесут правки в конфигурационный файл git: ~/.gitconfig. Также файл ~/.gitconfig можно редактировать и вручную vim ~/.gitconfig
git current branch
Для удобной работы с бренчами нужно поставить пакет bash-completion (под маком установить git с вариантом +bash_completion) и добавить такую инструкцию в ~/.bash_profile (или ~/.bashrc). Отображать имя git бренча в консоли:
PS1='\h:\W$(__git_ps1 " (%s)") \u\$ '
Теперь имя текущего бренча будет отображаться слева от строки ввода в консоли и будет всегда на виду (изменения вступят в силу после ребута). Чтобы не перезагружаться, можно сделать source ~/.bashrc
, чтобы изменения добавленные в файл, немедленно вступили в силу.
git pull
От git pull нужно отказаться ввиду потенциальных проблем которые он несет. Вместо него лучше использовать явную связку git fetch + git merge.
Поэтому ежедневная работа должна строиться так:
git fetch # fetch remote changes to origin/* git branch # show the current branch, e.g. "master" git merge origin/master # merge remote changes of branch 'master' into local copy of branch 'master' git push origin master # push local changes of branch 'master' into remote branch 'master'
На одну команду больше — казалось бы, зачем. Тем не менее, такая схема будет способствовать тому что вы понимаете, что и куда мержите и что и куда вливаете. То есть, вызов git fetch не обязывает вас думать, правильно ли вы получаете изменения с центрального сервера, т.к. они всё равно попадут не в ваш текущий бренч, а в соответствующие бренчи origin/*, после чего вы, к примеру, сможете посмотреть, что это за изменения, стоит ли их в свой локальный бренч вливать, и т.д.
git merge
git merge branch2
Командой выше мы мерджим branch2 в текущий бранч, в тот, в котором мы сейчас находимся.
Влить ветку, но коммита при этом не произойдёт! После этого можно делать git diff или применять сторонние утилиты для diff. Очень удобно смотреть, какие изменения принесёт ветка:
git merge --squash --no-commit feature-branch
Узнать, в каком бранче мы сейчас находимся:
git branch
master
* ticket6029-detector
Текущий бренч помечен звёздочкой.
Список бренчей на сервере:
git branch -a
Удаление git бренчей
Удалить локальный branch:
git branch -d branch_name
Удалить локальный branch с игнорированием изменений в нём (если с -d не получается):
git branch -D branch_name
Удалить локальные бренчи, которые удалены с сервера:
git remote prune origin --dry-run
Удалить бренч с origin сервера git:
git push origin :master_my_branch
Как отменить последний коммит в git?
Если случайно закоммитили лишние файлы или изменения, но еще не запушили, отменить последний коммит:
git reset --soft HEAD^
Эта команда отменит последний коммит (но не изменения, которые вы внесли. Код будет в таком же состоянии, как был до коммита).
Если последний коммит ужасен, то можно вообще его удалить:
git reset --hard HEAD^
Все это работает, если вы не опубликовали свои изменения. В случае, если вы их опубликовали, то не остается ничего другого, как сделать коммит, который отменяет какой-то коммит. sha1 коммита, который вы хотите удалить, можно посмотреть командой git log.
git revert sha1
После этого надо сделать git push.
Удобным life-хаком для работы с git ещё будет настроить более короткие алиасы.
Комментарии 0