Git na Windows (moje sposoby)

Uwielbiam Gita, moim zdaniem to najlepszy darmowy system kontroli wersji, jaki istnieje. Git powstał dla projektu jądra Linuksa, nie powinno, więc dziwić, że „domyślnie” Gita obsługuje się z konsoli.

Kiedy myślimy o Windows to nie myślimy, że można go obsługiwać z poziomu konsoli. A to błąd. Każdy programista nawet ten windowsowy powinien być biegły z konsoli, ponieważ używanie konsoli zawsze jest szybsze niż korzystanie z GUI.

Na maszynie deweloperskiej instaluje Gita 2 razy.

  1. Git dla konsoli z strony git-scm.com
  2. Git GUI w postaci SourceTree

Z konsoli korzystam dla najczęściej wykorzystywanych komend (git add, git commit -m "<commit message>", git fetch, git rebase, git merge, git push)
Z GUI korzystam w momencie, kiedy nie pamiętam jakieś komendy, chce wizualizacji komitów, kiedy chcę odrzucić z komitowania części plików. Po prostu wybieram narzędzie które umożliwi mi najszybsze do wykonania danego zadania.

Osobiście nie lubię korzystać z Git basha, czyli z przeportowanej powłoki bash pochodzącej z systemu Linux. Dbam oto, aby wszystkie wykorzystywane przez mnie programy są dostępne z każdej powłoki jaką uruchomię, na Windows jest to CMD oraz PowerShell.

Podczas instalacji Gita użytkownik ma możliwość wyboru z jakiej powłoki będzie dostępny git:

git_install_settings

Domyślnie zaznaczona jest opcja pierwsza.

Po takiej instalacji git powinien być dostępny w każdej konsoli, jeżeli nie jest pamiętaj, aby zamknąć wszystkie okna konsol i spróbować ponownie, jeżeli nadal git się nie zgłasza, to pozostaje zrobić restart Windows

Git i PuTTy

Jeżeli się nie mylę to przy domyślnie Git na Windowsie wykorzystuje openSSH do uwierzytelniania się zewnętrznym repozytorium, kiedy jako metodę transportową wybierzemy SSH, a nie HTTPS. Skoro uciekamy od Basha to czemu nie uciec także openSSH?

Do tego potrzebuje pełen zestaw aplikacji, który można pobrać z strony PuTTY Download Page i szukamy Windows Installer.

Po zainstalowaniu musimy ustawić zmienną GIT_SSH w Windows, która będzie wskazywać na program plink.exe pochodzący z pakietu PuTTY.

Aby ustawić GIT_SSH jak prawdziwy konsolowo-maczo

W CMD, jako administrator należy wpisać:

setx GIT_SSH "C:\Program Files (x86)\PuTTY\plink.exe" /M

Po tym etapie, klucz prywatny załadowany przez Pageagent.exe powinien być wykorzystany przy git fetch/push.

(Przypominam o konieczności jednorazowego zaakceptowania klucza publicznego, wykonujemy to przez załadowanie klucza prywatnego i połączenie przez putty z hostem na adres twojego repozytorium.)

KDiff3

Moim narzędziem do rozwiązywania konfliktów przy łączeniu różnych gałęzi jest KDiff3.

Do skonfigurowania tego narzędzia należy wpisać takie dwie komendy

git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:\Program Files\KDiff3\kdiff3.exe"

PowerShell

Ostatnio dowiedziałem, że można ulepszyć konsolę PowerShell do lepszej obsługi Gita.

Mówię o posh-git, można go zainstalować poprzez PsGet, repozytorium modułów dla PowerShella.

W konsoli PowerShell wpisujemy, jako administrator:

(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
Set-ExecutionPolicy RemoteSigned
Install-Module posh-git

Po restarcie konsoli PowerShell prompt zacznie informować, w jakiej gałęzi się znajdujemy, ile plików jest nowych, zmienionych oraz usuniętych. Oprócz tego PowerShell zacznie podpowiadać komendy w git

git com => git commit