пятница, 25 сентября 2015 г.

Установка Git 2.5.3 x64 на Windows 10 Pro x64

Совсем недавно, 18 сентября 2015, была выпущена новая версия Git 2.5.3. Теперь она поставляется для x64 и x32 платформ и кроме того существует и в портабельной (portable) версии для обоих платформ.

Сейчас будем разбираться с установкой и настройкой. Поехали!

1) Качаем установщик Git-2.5.3-64-bit.exe

2) И запускаем его…

G0001

G0002

G0003

Выставляем галки как на скриншоте ниже

G0004

В принципе, если хотите, то можете выбрать и Git GUI, но он достаточно убогий и на мой взгляд лучше пользоваться другими графическими утилитами для Git. А еще лучше просто консолью :)

Причем даже если вы эту галку снимете, то gitk (Git GUI) все равно установится, единственное что он не пропишется в реестре для контекстного меню. Ну и на том спасибо. Меньше мусора.

G0005

Далее выбираем пункт как на скриншоте ниже. Ну или выбираете тот который вам по душе :)

G0006

Далее выбираем первый пункт, ну или, опять же, как душеньке угодно :)

G0007

Ниже тоже можно выбрать пункт как на скриншоте. Но опять же это дело вкуса. Тем более что в Windows 10 "империя зла", таки сделала добрый, ну более или менее хороший терминал. В общем выбираем по вкусу :)

G0008

И вообще все эти настройки что делаются на этапе инсталляции легко меняются в конфигурационных файлах.

Далее я ни чего не выбирал

G0009

Тем более, опять же, это можно изменить в конфигурационном файле и какой параметр менять тут уже указано.

И понеслась установка!

G0010

G0012

Все! Приехали! Конечная! Git установился.

После этого в меню Start появятся следующие пункты:

G0013

Git Bash – это консоль Bash для работы c Git

Git CMD – это консоль Windosws cmd.exe для работы с Git

Git GUI – это такая бесполезная штука, запустите увидите :)

Теперь давайте проверим что все у нас работает. Для этого запустим Git Bash и Git CMD. Git Bash это консоль в NIX стиле. Git CMD – это cmd.exe.

А после запуска дадим команду git --version

G0014

G0015

Как видим все работает. Конечно можно причесать обе консоли на предмет цветов, шрифтов и т.д. и т.п.

И еще пара замечаний, видно из Git Bash он основан на MINGW (x64). И git так же доступен и из обычного cmd.exe, который вы сами можете запустить…

G0016

Ну и далее настраиваем Git на свой вкус и цвет.

Единственное что еще стоит заметить, то это то что установщик Git дописал в системную переменную PATH путь к Git:

C:\Program Files\Git\cmd

Ну и еще стоит напомнить о том, что если вы хотите настроить Git на работу с русским языком, то помните еще и том в какой кодировке у вас работает терминал (консоль).

пятница, 1 мая 2015 г.

Настойка переменной окружения HOME для Git и плагина EGit в Eclipse

В принципе у меня и без этого все работало хорошо, но просто увидел вот такое предупреждение в Eclipse:

eclipse.buildId=4.4.2.M20150204-1700
java.version=1.8.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=ru_RU
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product

org.eclipse.egit.ui
Warning
Fri May 01 18:49:30 MSK 2015
Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\<user_name>'. If this is not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.

Лечится все это очень просто. Есть описания на английском:

http://wiki.eclipse.org/EGit/User_Guide#Setting_up_the_Home_Directory_on_Windows

https://danlimerick.wordpress.com/2011/07/11/git-for-windows-tip-setting-home-and-the-startup-directory/

В общем просто создаем переменную окружения HOME вот так:

2015-05-01_191030

Хотя я проблем ни каких не заметил. Может потому что работаю в командной строке. Мне ее хватает.

понедельник, 30 марта 2015 г.

Инструменты для работы с Git – IDM UltraCompare 8.50.0.1023

Для полноты картины опишу и этот инструмент. Может кто привык к нему. Но как то он не очень работает с кодировочками.

Этап установки пропущу. Сразу же привету конфиг файл и примеры работы.

[core]
 repositoryformatversion = 0
 filemode = false
 bare = false
 logallrefupdates = true
 symlinks = false
 ignorecase = true
 hideDotFiles = dotGitOnly

[diff]
 tool = p4m
 tool = kdiff3
 tool = dm
 tool = dfu
 tool = wm
 tool = ss
 tool = bc4
 tool = araxis
 tool = edp
 tool = ucp

[difftool "p4m"]
 cmd = "p4merge.exe $LOCAL $REMOTE"

[difftool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe

[difftool "dm"]
 cmd = C:/Program\\ Files/DiffMerge/sgdm.exe $LOCAL $REMOTE

[difftool "dfu"]
 cmd = diffusew $LOCAL $REMOTE

[difftool "wm"]
 cmd = winmergeu $LOCAL $REMOTE

[difftool "ss"]
 cmd = smartsynchronize.exe $LOCAL $REMOTE

[difftool "bc4"]
 cmd = bcomp.exe $LOCAL $REMOTE

[difftool "araxis"]
 path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe

[difftool "edp"]
        cmd = \"C:/Program Files/ExamDiff Pro/ExamDiff.exe\" \"$LOCAL\" \"$REMOTE\" //nh 

[difftool "ucp"]
 cmd = ucp.exe -t $LOCAL $REMOTE


[difftool]
        prompt = false
        keepBackup = false
        trustExitCode = false

[merge]
 tool = p4m
 tool = kdiff3
 tool = dm
 tool = dfu
 tool = ss
 tool = bc4
 tool = araxis
 tool = edp
 tool = ucp

[mergetool]
 prompt = false
 keepBackup = false
 keepTemporaries = false

[mergetool "p4m"]
 cmd = "p4merge.exe $BASE $LOCAL $REMOTE $MERGED"
 trustExitCode = true
 

[mergetool "kdiff3"]
 path = C:/Program Files/KDiff3/kdiff3.exe

[mergetool "dm"]
 cmd = C:/Program\\ Files/DiffMerge/sgdm.exe -merge -result=$MERGED $LOCAL $BASE $REMOTE 

[mergetool "dfu"]
 cmd = diffusew $MERGED $LOCAL $BASE $REMOTE

[mergetool "ss"]
        cmd = smartsynchronize.exe $LOCAL $REMOTE $MERGED
        trustExitCode = false

[mergetool "bc4"]
        cmd = bcomp.exe $LOCAL $REMOTE $BASE $MERGED
        trustExitCode = true

[mergetool "araxis"]
 path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe

[mergetool "edp"]
        cmd = \"C:/Program Files/ExamDiff Pro/ExamDiff.exe\" 
//merge \"$REMOTE\" \"$BASE\" \"$LOCAL\" //o:\"$MERGED\" 
//dn1:\"Remote\" //dn2:\"Base\" //dn3:\"Local\" //dno:\"Output\" //nh

[mergetool "ucp"]
 cmd = ucp.exe -3 $BASE $LOCAL $REMOTE

Протестируем работу сравнения файлов командой

$ git difftool c258082 ffd6b37 --tool=ucp --cc test.txt

U0001

Всплыло окошко

U0002

И так сравнение работает, проверяем слияние командами:

$ git merge newbranch
$ git mergetool --tool=ucp


U0004

Всплыло окошко, которое хочется сразу же закрыть Smile

U0003

Виндовую кодировочку показывает не верно. Странно это как-то. Но так или иначе работает.

четверг, 19 марта 2015 г.

Инструменты для работы с Git – GitEye

Идем сюда и качаем под свою ОС

G0001

Установка сводится к разархивированию архива и запуска приложения, которое по существу является плагином Git к Eclipse.

G0002

G0003

Добавим любой текущий репозиторий

G0004

G0005

В общем получили оболочку Git из Eclipse Smile

Про отрубленную голову Git (detached HEAD state)

1400761301_tudaТы туда не ходи - ты сюда ходи. А то снег башка попадёт - совсем мёртвый будешь...

В этой статье пойдет речь про отрубленное отсоединенное состояние указателя HEAD. Надо понимать что названия веток в Git это указатели на коммиты. Имя ветки, допустим master, указывает на последний коммит в ветке master.

Существует так же множество других указателей и один из них HEAD, но это очень важный указатель. И вот о нем мы и поговорим.

 

И так у нас есть история коммитов

H0001

И сейчас указатель ветки master и указатель HEAD указывают на последний коммит С4 в ветке master.

То же самое можно увидеть в Git

H0002

Оба указателя master и HEAD указывают на коммит С4 (efaaf18).

Теперь передвинем указатель HEAD на коммит C2 командой

$ git checkout 7bbbd68

H0003

Вот мы и получили отрубленную отсоединеннуюый голову указатель HEAD. И Git нам любезно сообщил что снег башка попал…

На диаграмме это можно изобразить так

H0004

То есть команда git checkout 7bbbd68 просто перенесла указатель HEAD на коммит C2 (7bbbbd68). И вместе с этим вернула в рабочий каталог состояние файлов этого коммита. То есть мы откатились назад по истории коммитов.

И Git порекомендовал нам создать новую ветку, а так же сообщил хэш коммита на который сейчас указывает HEAD.

Все это можно увидеть в Git

H0005

Состояние HEAD detached означает что HEAD указывает не на вершину какой либо ветки, а просто на какой-то коммит.

Посмотреть историю перемещения головы можно командой git reflog

H0006

На скрине мы так же посмотрели состояние Git и он нам (аж красным) сообщил, что башка отсоединена на коммит 7bbbd68.

HEAD всегда должен указывать на вершину какой-либо ветки. Это очень важно. И вот почему.

Указатель HEAD по существу указывает на тот коммит, после которого будет сделан следующий коммит. И если в состоянии отрубленной головы мы сейчас сделаем еще один коммит, то у нас будет шанс потерять его, не в смысле что он будет не доступен, а что если мы не будем помнить хэш этого коммита, то мы ни когда не сможем на него переключится.

Давайте сделаем коммит и посмотрим что будет. Изменим файлик и посмотрим статус

H0007

Ну и делаем коммит

H0008

Из лога коммитов видно что сейчас HEAD указывает на коммит С5 (84b361c), но на этот коммит не указывает ни какая ветка, верней сказать ни какой указатель ветки.

Графически это можно изобразить так

H0009

Мы по прежнему находимся в состоянии detached HEAD, о чем нам все время напоминает Git. Еще раз напомню что это означает что HEAD указывает не на вершину какой-либо ветки, а просто на коммит. В нашем случае на коммит С5 (84b361c).

Выйти из состояния detached HEAD очень легко, для этого надо переключится на какую-либо ветку или создать новую ветку.

Давайте переключимся на ветку master командой git checkout master

H0010

При переключении на ветку master, Git заботливо нас предупредил, что мы оставляем 1 commit, который не присоединен ни к какой ветке. Сообщил нам имя этого коммита – С5 и его хэш – 84b361c. И посоветовал, что возможно уже самое время создать новую ветку командой

git branch new_branch_name 84b361c

Поскольку если мы сейчас не создадим ветку (указатель) на этом коммите, то мы можем его потерять.

Если сейчас дать команду просмотра лога коммитов, то мы коммит С5 в логе не увидим

H0011

Таким образом мы можем “потерять” коммит С5, если забудем его хэш. Конечно, как уже говорилось, что в Git какой-либо сделанный коммит сложно потерять (но можно). И в данном случае мы можем посмотреть историю перемещения HEAD

H0012

и в ней мы можем увидеть наш потерянный коммит, хотя мы его и не видели в истории коммитов (логе коммитов).

Теперь дадим команду

$ git branch lost_branch 84b361c

и посмотрим лог

H0013

Теперь, все хорошо. На коммит С5 указывает ветка lost_branch

Графически это выглядит так

H0014

Теперь мы легко можем переключится на ветку lost_branch и состояния HEAD deatached уже не будет, поскольку HEAD уже будет указывать на вершину ветки lost_branch.

H0015

Сейчас переключение произошло безболезненно, поскольку это вполне штатная работа в Git.

Ну и покажу это состояние графически

H0016

На этом, с отсоединенной головой пока все. Хотя есть еще варианты по отделению головы в Git, но об этом как-нибудь в другой раз.

пятница, 6 марта 2015 г.

Правильная установка Git на Mac OS X

Если воспользоваться установщиком Git с официального сайта

M0001

То, устанавливается не самая последняя версия Git.

Дайте команду в терминале

$ git --version

И если вы увидите что то вроде этого

git version 1.9.3 (Apple Git-50)

то это статья для вас. Если вы видите версию 2.3.1 (на момент написания статьи) последняя была такая, то тогда у вас все хорошо.

И так сперва устанавливаем Homebrew, если он у вас еще не стоит.

Просто скопируйте и вставьте эту строку в терминал и запустите ее.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

После того как Homebrew установиться дайте в терминале команду

brew install git

После того как Git установится дайте команду

export PATH=/usr/local/bin:$PATH

чтобы прописать путь к новой установке Git.

И далее смотрим версию Git

$ git --verrsion

Должны увидеть что то типа этого

Git_Mac_OS_X

git version 2.3.1

Все! Далее чтобы обновлять Git  достаточно дать команду

brew upgrade git

Просто не правда ли!?

Пример обновления Git в Mac OS X 10.10.2 через Homebrew

brewGitUpgrade

Вот и получили самую свежую версию Git на Mac OS X

Установка Git под Windows из пакетов Cygwin

Установка версии Git под Windows от MsysGit проста и в принципе всем хороша. Только вот версия Git, там не самая свежая, по крайней мере сейчас. Но ее вполне достаточно для повседневной работы с Git. Если мы посмотрим версию, то увидим:

$ git --version
git version 1.9.5.msysgit.0

Но если вдруг надо что-то более свежее, то можно установить Git из пакетов Cygwin. Для этого естественно нужно установить и сам Cygwin. В этом нет ни чего сложного. Идем сюда и качаем установщик. Это именно установщик, а не дистрибутив. Так как он качает все пакеты из сети. И кроме того, его же надо использовать чтобы обновить установленные пакеты или установить новые.

И так качаем

C0001

И запускаем установщик

C0002

C0003

C0004

Рекомендую хранить все относящееся к Cygwin в его корневом каталоге, и собственно туда же перенести установщик, после окончания загрузки и установки пакетов.

C0005

C0006

C0007

Делай раз, два, три

C0008

В любом случае, если что-то потом понадобится, то можно скачать и установить. Как видим версия Git в данном пакете 2.1.4, что уже явно посвежее 1.9.5. Хотя под Linux и Mac OS X уже доступен 2.3.1.

C0009

Пошла загрузка пакетов

C0010

На всякий случай приведу еще парочку быстрых серверов для загрузки

C0011

Этот вообще просто сказка Smile

C0016

Ну вот все и установилось

C0012

Запускаем и видим что при первом запуске нам сообщают где находятся конфигурационные файлы:

C0013

C0014

На рисунке справа видно где находится домашний каталог пользователя. Это папка установки (в моем случае C:\cigwin64), далее папка home, затем папка с именем пользователя и в ней уже файлы конфигов .bashrc, .bash_profile, .inputrc и .profile.

C0015Вся конфигурация терминала делается в этих файлах. Тут описывать это не буду, так как это большая отдельная тема.

Замечу лишь что основные настройки bash делаются в файле .bash_profile.

Так же можно отметить, что в домашнем каталоге так же будет размещаться и файл настроек Git – .gitconfig

Кроме того, настроить внешний вид терминала можно кликнув по иконке терминала в левом верхнем углу и выбрав Options.

 

Если вам нужны какие-то дополнительные пакеты для Cygwin, то поискать их можно тут.

После всех настроек мое окно терминала Cygwin выглядит так. И тут же посмотрим версию установленного Git.

C0017

Ну вот у нас и полноценный Git. Теперь (быстренько) проверим его работу на реальном репозитории.

C0018

Все работает.

P.S. Что еще раз стоит отметить, так это то, что глобальные и системные (global, system) настройки msysGit и Git установленного из Cygwin хранятся в разных местах, и друг другу ни как не мешают и не перекрывают, на мой взгляд это удобно, поскольку все виндовые тулзы пытаются записать свои настройки в глобальный файл настроек .gitconfig и это может, иногда, создавать не удобства и путаницу.