Ich ver­wen­de git for Win­dows zu­sam­men mit PuTTY.

Down­load

Für die In­stal­la­ti­on wer­den dem­entspre­chend zu­nächst git for Win­dows und PuTTY be­nö­tigt.

In­stal­la­ti­on

Ich emp­feh­le, zu­nächst Putty zu in­stal­lie­ren, und zwar am ehes­ten unter Ver­wen­dung des Win­dows-In­stal­lers. Da­nach kann die In­stal­la­ti­on von git for Win­dows be­gin­nen.

Die Be­schrei­bung wurde zu­letzt für die Ver­si­on 2.49.0 ak­tua­li­siert.

Im Ver­lauf des In­stal­la­ti­ons­pro­zes­ses sind dann ei­ni­ge Fra­gen zur (Erst-) Kon­fi­gu­ra­ti­on zu be­ant­wor­ten.

Wurde git be­reits ein­mal in­stal­liert, wer­den nach An­ha­ken der Op­ti­on "Only show new op­ti­ons" nur Op­tio­nen an­ge­zeigt, die neu hin­zu­ge­kom­men sind, und an­sons­ten die bei der Erst­in­stal­la­ti­on aus­ge­wähl­ten Pa­ra­me­ter über­nom­men. Soll eine Aus­wahl ge­än­dert wer­den, kann der In­stal­ler ein­fach noch ein­mal ge­star­tet wer­den; in die­sem Fall soll­te man den Haken bei "Only show new op­ti­ons" frei­lich nicht set­zen. Nach dem er­neu­ten Durch­lau­fen des In­stal­lers wer­den dann nur die Kon­fi­gu­ra­ti­ons­än­de­run­gen über­nom­men.

Aus­wahl der zu in­stal­lie­ren­den Kom­po­nen­ten

screenshot

Screen­shot: Aus­wahl der zu in­stal­lie­ren­den Kom­po­nen­ten

Zu­sätz­lich aus­ge­wählt wer­den kön­nen hier

  • Desk­top-Icons,
  • die Auf­nah­me von Git Bash und Git GUI ins Kon­text-Me­nü des Win­dows-Ex­plo­rers,
  • Un­ter­stüt­zung für Git Large File Sto­r­a­ge,
  • die Ver­knüp­fung von .gitignore und ver­gleich­ba­ren Da­tei­en mit dem Win­dows-Stan­dard-Edi­tor (nor­ma­ler­wei­se No­te­pad),
  • die Ver­knüp­fung von .sh-Da­tei­en mit der Bash,
  • die täg­li­che Suche nach Up­dates,
  • ein Pro­fil für das neue Win­dows Ter­mi­nal, so dass die Git Bash dort als Tab an­ge­bo­ten wird, und
  • Sca­lar, ein Tool zum Ma­nage­ment gro­ßer Re­po­si­to­ries.

Aus­wahl des Stan­dard-Edi­tors für git

screenshot

Screen­shot: Aus­wahl des Stan­dard-Edi­tors

Für Com­mit-Mes­sa­ges und ähn­li­che Zwe­cke star­tet git einen Edi­tor; stan­dard­mä­ßig ist das vim. Ich habe diese Ein­stel­lung so be­las­sen, aber der eine oder an­de­re möch­te statt­des­sen viel­leicht einen an­de­ren Edi­tor aus­wäh­len wie No­te­pad++ oder Sub­li­me Text.

Be­zeich­nung des Stan­dard-Branch

screenshot

Screen­shot: Aus­wahl des Stan­dard-Edi­tors

Üb­li­cher­wei­se heißt der Stan­dard-Branch, der in jedem neuen Re­po­si­to­ry an­ge­legt wird, master (so wie bspw. trunk bei SVN). Da es Dis­kus­sio­nen um eine "in­klu­si­ve­re" Be­nen­nung gab (wer würde bei "Mas­ter" nicht di­rekt an Ko­lo­nia­lis­mus und Skla­ve­rei den­ken?), wird sich diese Vor­ein­stel­lung mög­li­cher­wei­se in Zu­kunft än­dern. Daher kann man die Be­nen­nung des Stan­dard-Bran­ches git über­las­sen oder - für die ganze In­stal­la­ti­on - eine an­de­re Vor­ein­stel­lung wäh­len.

Be­reits be­ste­hen­de Re­po­si­to­ries sind von die­ser Aus­wahl nicht be­trof­fen.

Aus­wahl des Such­pfa­des für git

screenshot

Screen­shot: Aus­wahl des Such­pfa­des

Stan­dard­mä­ßig wird git nur aus der Git Bash, also der mit­ge­lie­fer­ten Ter­mi­nal­um­ge­bun, ge­star­tet. Hier kön­nen Sie den Such­pfad (PATH) so an­pas­sen, dass ent­we­der nur git oder auch alle mit­ge­lie­fer­ten Tools auch von der nor­ma­len Win­dows-Kom­man­do­zei­le aus ge­star­tet wer­den kön­nen. Wenn Sie auch die Tools in den Such­pfad auf­neh­men, ste­hen gleich­na­mi­ge Win­dows- bzw. DOS-Tools nicht mehr zur Ver­fü­gung, weil das Sys­tem dann zu­erst die mit git mit­ge­lie­fer­ten Tools fin­det.

Aus­wahl des SSH-Pro­gramms

screenshot

Screen­shot: Aus­wahl des SSH-Pro­gramms

git un­ter­stützt ent­we­der das mit­ge­lie­fer­te OpenS­SH für die Her­stel­lung von SSH-Ver­bin­dun­gen oder bie­tet an, eine be­reits be­ste­hen­de oder ge­son­dert in­stal­lier­te SSH-Va­ri­an­te zu ver­wen­den. Zu­min­dest dann, wenn Putty be­reits in­stal­liert ist, soll­te auch das ent­spre­chen­de Kom­man­do­zei­len-Pro­gramm plink an­ge­bo­ten wer­den. Ggf. muss hier der pas­sen­de Pfad an­ge­ge­ben wer­den, wenn der In­stal­ler ihn nicht von selbst fin­det.

Hier kann auch ein­fach die Stan­dard­ein­stel­lung zur Ver­wen­dung des mit­ge­lie­fer­ten OpenS­SH aus­ge­wählt und dann über das Set­zen der Um­ge­bungs­va­ria­ble GIT_SSH das ge­wünsch­te Pro­gramm be­stimmt wer­den.

Aus­wahl der SSL-Bi­blio­thek für HTTPS-Ver­bin­dun­gen

screenshot

Screen­shot: Aus­wahl der SSL-Bi­blio­thek

Ge­si­cher­te Ver­bin­dun­gen zu einem git-Ser­ver kön­nen neben SSH auch über HTTPS auf­ge­baut wer­den. Hier kann aus­ge­wählt wer­den, wel­che SSL-Bi­blio­thek ver­wen­det wer­den soll. Das hat auch Aus­wir­kun­gen, auf wel­chen Spei­cher für gül­ti­ge Zer­ti­fi­ka­te zu­ge­grif­fen wird.

Aus­wahl der Kon­ver­tie­rung von Zei­len­en­den

screenshot

Screen­shot: Aus­wahl der Zei­len­en­den

Win­dows und Unix ver­wen­den un­ter­schied­li­che Steu­er­zei­chen, um ein Zei­len­en­de bzw. einen Zei­len­um­bruch in Text­da­tei­en zu kenn­zeich­nen. Win­dows be­nutzt CR+LF, also "car­ria­ge re­turn" und "line feed", Unix ver­wen­det nur LF, also nur "line feed". Wer schon ein­mal Text­da­tei­en - Kon­fi­gu­ra­ti­ons­da­tei­en, Web­sei­ten, PHP- oder an­de­re Code - von einem Win­dows­rech­ner (Ar­beits­rech­ner) auf einen Unix­rech­ner (Web­ser­ver unter Linux) trans­fe­riert hat, kennt das Pro­blem.

git und git for Win­dows bie­ten die Mög­lich­keit einer au­to­ma­ti­schen Kon­ver­tie­rung von Text­da­tei­en beim Ein- oder Aus­ch­e­cken. Die drit­te (un­ters­te) Op­ti­on schal­tet diese Kon­ver­tie­rung aus. Die obers­te Op­ti­on kon­ver­tiert alle Zei­len­en­de beim Aus­ch­e­cken nach Win­dows und beim Ein­che­cken nach Unix. Da­tei­en wer­den also auf dem Win­dows-Ar­beits­rech­ner immer Win­dows-Zei­len­en­den haben, im Re­po­si­to­ry aber mit Unix-Zei­len­en­den ab­ge­legt sein und beim Check­out auf einem Unix-Rech­ner an­ders­wo dem­entspre­chend auch diese Zei­len­en­de haben. Die mitt­le­re Op­ti­on checkt Da­tei­en un­ver­än­dert aus, kon­ver­tiert die Zei­len­en­den aber beim Ein­che­cken nach Unix. Das be­deu­tet, dass alle Da­tei­en spä­tes­tens nach dem ers­ten Ein­che­cken Unix-Zei­len­en­den haben.

Für die Ar­beit auf einem Win­dows-Rech­ner wird die erste Op­ti­on emp­foh­len. Ich nutze je­doch die zwei­te Op­ti­on - aus zwei Grün­den. Zum einen un­ter­stüt­zen alle von mir ver­wen­de­ten Edi­to­ren auch Unix-Zei­len­en­den, so dass eine Kon­ver­tie­rung nach Win­dows für mich nicht not­wen­dig ist. Zum an­de­ren kann ich so auch ein­mal eine Datei per SCP von Hand auf einen Li­nux­ser­ver hoch­la­den, ohne sie dann noch ein­mal kon­ver­tie­ren zu müs­sen.

Die Aus­wahl wird in der zen­tra­len Kon­fi­gu­ra­ti­ons­va­ria­blen core.autocrlf ge­spei­chert und kann dem­entspre­chend auch spä­ter noch ge­än­dert wer­den mit dem Be­fehl git config --global core.autocrlf ..., wobei statt ... dann eben true, input oder false zu set­zen sind.

Aus­wahl des Ter­mi­nal-Emu­la­tors

screenshot

Screen­shot: Aus­wahl des Ter­mi­nal-Emu­la­tors

Als Ter­mi­nal kann ent­we­der das bei git for Win­dows mit­ge­lie­fer­te MinT­TY oder die nor­ma­le Win­dows-Kom­man­do­zei­le cmd.exe ver­wen­det wer­den.

Aus­wahl des Stan­dard-Ver­hal­tens von git pull

screenshot

Screen­shot: Aus­wahl des Stan­dard-Ver­hal­tens von git pull

git pull kom­bi­niert den Auf­ruf von git fetch mit der In­te­gra­ti­on von Än­de­run­gen in das lo­ka­le Re­po­si­to­ry. Wenn sich Di­ver­gen­zen zwi­schen dem ex­ter­nen und dem lo­ka­len Re­po­si­to­ry er­ge­ben haben, kön­nen diese ent­we­der über einen Merge auf­ge­löst wer­den, oder durch Re­ba­se, oder es kann in die­sem Fall eine Feh­ler­mel­dung aus­ge­ge­ben wer­den (letz­te­res ist die Stan­dard­ein­stel­lung).

Aus­wahl des Creden­ti­al Hel­pers

screenshot

Screen­shot: Aus­wahl des Git Creden­ti­al Ma­na­ger

Wer nicht über SSH zu­greift oder keine SSH-Schlüs­sel ver­wen­det, be­nö­tigt in der Regel zu­min­dest für den schrei­ben­den Zu­griff auf ein Re­po­si­to­ry eine Be­nut­zer­ken­nung und ein Pass­wort. Diese kön­nen über Hilfs­pro­gram­me ver­wal­tet wer­den. Hier­zu kann der Git Creden­ti­al Ma­na­ger in­stal­liert wer­den.

Kon­fi­gu­ra­ti­on wei­te­rer Op­tio­nen

screenshot

Screen­shot: Aus­wahl wei­te­rer Op­tio­nen

Ab­schlie­ßend kön­nen noch ei­ni­ge wei­te­re Op­tio­nen aus­ge­wählt wer­den:

  • Caching zur Per­for­mance-Ver­bes­se­rung (core.fscache) und
  • Un­ter­stüt­zung für sym­bo­li­sche Links.

Letz­te­res er­for­dert die Zu­wei­sung des SeCreateSymbolicLinkPrivilege unter Win­dows für alle Be­nut­zer, die diese Mög­lich­keit ver­wen­den wol­len.

Kon­fi­gu­ra­ti­on

Zum Ab­schluss sind noch ei­ni­ge Kon­fi­gu­ra­ti­ons­än­de­run­gen vor­zu­neh­men.

Um­ge­bungs­va­ria­ble GIT_SSH set­zen

Zum einen muss der Such­pfad für plink, das ver­wen­de­te SSH-Pro­gramm aus dem Putt-Pa­ket, kon­fi­gu­riert wer­den. Ak­tu­el­le Ver­sio­nen von git for Win­dows soll­ten das au­to­ma­tisch tun; wenn Sie aber Schwie­rig­kei­ten mit SSH-Ver­bin­dun­gen haben, soll­ten Sie die Um­ge­bungs­va­ria­ble GIT_SSH pas­send set­zen.

Dazu be­ge­ben Sie sich in der Sys­tem­steue­rung im Be­reich "Sys­tem und Si­cher­heit" zum Aus­wahl­punkt "Sys­tem" und wäh­len dort im Menü auf der lin­ken Seite den Punkt "Er­wei­ter­te Sys­tem­ein­stel­lun­gen"; Ad­mi­nis­tra­tor-Rech­te sind dafür er­for­der­lich. Es öff­net sich so­dann ein wei­te­res Fens­ter, in dem be­reits der Rei­ter "Er­wei­tert" aus­ge­wählt ist.

screenshot

Screen­shot: Der Dia­log "er­wei­ter­te Sys­tem­ei­gen­schaf­ten"

Über den But­ton "Um­ge­bungs­va­ria­blen" ge­lan­gen Sie zu einem wei­te­ren Aus­wahl­dia­log, in dem Sie ent­we­der nur für den an­ge­mel­de­ten Be­nut­zer oder glo­bal die Um­ge­bungs­va­ria­ble GIT_SSH auf den Pfad zum Pro­gramm plink set­zen kön­nen.

screenshot

Screen­shot: Der Dia­log "Um­ge­bungs­va­ria­blen"

Öf­fent­li­chen SSH-Schlüs­sel des Ser­vers spei­chern

Schließ­lich müs­sen Sie noch dafür sor­gen, dass PuTTY und plink den öf­fent­li­chen SSH-Schlüs­sel (Host­key) des Ser­vers, mit dem git sich ver­bin­den soll, ken­nen.

Ich baue dafür eine SSH-Ver­bin­dung über PuTTY auf und ak­zep­tie­re - nach Prü­fung - den Host­key. Da­nach kann der Ver­bin­dungs­ver­such ab­ge­bro­chen wer­den und der Host­key ist ge­spei­chert. (Si­cher geht das auch noch pro­fes­sio­nel­ler, aber es tut auch so sei­nen Zweck.)

Pa­ge­ant star­ten

Vor der Ar­beit mit git for Win­dows soll­ten Sie je­weils pa­ge­ant star­ten und Ihren SSH-Schlüs­sel dort laden.

Ab­schluss

Jetzt ist git for Win­dows in­stal­liert und kon­fi­gu­riert.

Sie kön­nen nun so­wohl die Kom­man­do­zei­le als auch den gra­phi­schen Cli­ent ent­we­der über die Desk­top-Icons oder über das Kon­text­me­nü im Ex­plo­rer star­ten und dann mit der Ar­beit mit git los­le­gen.

gitk, der Git Re­po­si­to­ry Brow­ser, lässt sich ein­fach über die Kom­man­do­zei­le star­ten. Geben Sie dort gitk& ein. Das & star­tet gitk im Hin­ter­grund. Wol­len Sie gitk di­rekt mit allen Bran­ches star­ten, be­nut­zen Sie gitk --all&. Selbst­ver­ständ­lich geht das auch aus den Menüs im gra­phi­schen Cli­ent.

Für den Ein­stieg hilft dann die Do­ku­men­ta­ti­on - die man pages oder das kom­plet­te Buch Pro Git, das teil­wei­se be­reits ins Deut­sche über­setzt wurde. Da­ne­ben gibt es auch das deutsch­spra­chi­ge Git-Buch.

Viel Er­folg!