git. Настройка git

Установка 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 ещё будет настроить более короткие алиасы.

 

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ