
| Current Path : /var/www/web-klick.de/dsh/50_dev2017/1303__autotestfrontend/git/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/web-klick.de/dsh/50_dev2017/1303__autotestfrontend/git/git.html |
<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>git - Der einfache Einstieg - kein Schnick-schnack!</title>
<link href="git-Dateien/css.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="git-Dateien/normalize.css" type="text/css">
<link rel="stylesheet" href="git-Dateien/style.css" type="text/css">
<script src="git-Dateien/widgets.js" id="twitter-wjs"></script><script src="git-Dateien/ga.js" async="" type="text/javascript"></script><script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-652147-13']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
function recordOutboundLink(link, category, action) {
_gat._getTrackerByName()._trackEvent(category, action);
setTimeout('document.location = "' + link.href + '"', 100);
}
</script>
<script src="git-Dateien/embed.js" async="" type="text/javascript"></script></head>
<body data-twttr-rendered="true">
<div class="scrollblock block-title">
<h1>git - Der einfache Einstieg</h1>
<p>eine einfache Anleitung um git zu lernen. Kein Schnick-schnack ;)</p>
<iframe data-twttr-rendered="true" title="Twitter Tweet Button" style="width: 137px; height: 28px;" class="twitter-share-button twitter-count-horizontal" src="git-Dateien/tweet_button.html" allowtransparency="true" frameborder="0" scrolling="no"></iframe>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<p class="meta">
von <a href="http://www.twitter.com/rogerdudler">Roger Dudler</a>
<br>Dank an <a href="http://www.twitter.com/tfnico">@tfnico</a>, <a href="http://www.twitter.com/fhd">@fhd</a> und <a href="http://www.namics.com/">Namics</a><br>
diese Anleitung in
<a href="http://rogerdudler.github.com/git-guide/index.html">english</a>,
<a href="http://rogerdudler.github.com/git-guide/index.es.html">español</a>,
<a href="http://rogerdudler.github.com/git-guide/index.fr.html">français</a>,
<a href="http://rogerdudler.github.com/git-guide/index.it.html">italiano</a>,
<a href="http://rogerdudler.github.com/git-guide/index.nl.html">nederlands</a>,
<a href="http://rogerdudler.github.com/git-guide/index.pt_BR.html">português</a>,
<a href="http://rogerdudler.github.com/git-guide/index.ru.html">русский</a>,
<a href="http://rogerdudler.github.com/git-guide/index.tr.html">türkçe</a>,
<br>
<a href="http://rogerdudler.github.com/git-guide/index.my.html">မြန်မာ</a>,
<a href="http://rogerdudler.github.com/git-guide/index.ja.html">日本語</a>,
<a href="http://rogerdudler.github.com/git-guide/index.zh.html">中文</a>,
<a href="http://rogerdudler.github.com/git-guide/index.ko.html">한국어</a>
<br>
<a href="http://rogerdudler.github.com/git-guide/index.ja.html">日本語</a>, <a href="http://rogerdudler.github.com/git-guide/index.zh.html">中文</a>, <a href="http://rogerdudler.github.com/git-guide/index.ko.html">한국어</a><br>
Feedback auf <a href="https://github.com/rogerdudler/git-guide/issues">github</a>
</p>
<img src="git-Dateien/arrow.png" alt="">
</div>
<!-- setup -->
<a name="setup"></a>
<div class="scrollblock block-setup">
<h2>Installation</h2>
<p>
<a href="http://code.google.com/p/git-osx-installer/downloads/list?can=3">git für OSX herunterladen</a>
</p>
<p>
<a href="http://code.google.com/p/msysgit/downloads/list?can=3">git für Windows herunterladen</a>
</p>
<p>
<a href="http://book.git-scm.com/2_installing_git.html">git für Linux herunterladen</a>
</p>
</div>
<a name="create"></a>
<div class="scrollblock block-create">
<h2>Neues Repository erstellen</h2>
<p>
erstelle ein neues Verzeichnis, öffne es und führe <br>
<code>git init</code><br>
aus, um ein neues git-Repository anzulegen.
</p>
</div>
<a name="checkout"></a>
<div class="scrollblock block-checkout">
<h2>Ein Repository auschecken</h2>
<p>
erstelle eine Arbeitskopie, indem du folgenden Befehl ausführst:<br>
<code>git clone /pfad/zum/repository</code><br>
Falls du ein entferntes Repository verwendest, benutze:<br>
<code>git clone benutzername@host:/pfad/zum/repository</code>
</p>
</div>
<a name="trees"></a>
<div class="scrollblock block-trees">
<h2>Workflow</h2>
<p>
Dein lokales Repository besteht aus drei "Instanzen", die von git verwaltet werden.
Die erste ist deine <code>Arbeitskopie</code>, welche die echten Dateien enthält.
Die zweite ist der <code>Index</code>, welcher als Zwischenstufe agiert und
zu guter Letzt noch der <code>HEAD</code>, der auf deinen letzten Commit zeigt.
</p>
<img src="git-Dateien/trees.png" alt="">
</div>
<a name="add"></a>
<div class="scrollblock block-add">
<h2>add & commit</h2>
<p>
Du kannst Änderungen vorschlagen (zum <b>Index</b> hinzufügen) mit<br>
<code>git add <dateiname></code><br>
<code>git add *</code><br>
Das ist der erste schritt im git workflow, du bestätigst deine Änderungen mit:<br>
<code>git commit -m "Commit-Nachricht"</code><br>
Jetzt befindet sich die Änderung im <b>HEAD</b>, aber noch nicht im entfernten Repository.
</p>
</div>
<a name="push"></a>
<div class="scrollblock block-remote">
<h2>Änderungen hochladen</h2>
<p>
Die Änderungen sind jetzt im <b>HEAD</b> deines lokalen Repositories. Um die Änderungen an dein entferntes Repository zu senden, führe:<br>
<code>git push origin master</code><br>
aus. Du kannst <i>master</i> auch mit einem beliebigen anderen Branch ersetzen, mehr über Branches erfährst du später.
<br><br>
Wenn du dein lokales Repository nicht von einem entfernten
geklont hast und du diese aber mit einem anderen Repository verbinden
möchtest, musst du dieses mit <br>
<code>git remote add origin <server></code><br>
hinzufügen. Jetzt bist du bereit deine Änderungen hochzuladen<br>
</p>
</div>
<a name="branching"></a>
<div class="scrollblock block-branching">
<h2>Branching</h2>
<p>
Branches werden benutzt um verschiedene Funktionen isoliert voneinander zu entwickeln. Der <i>master</i>-Branch
ist der "Standard"-Branch, wenn du ein neues Repository erstellst. Du
solltest aber für die Entwicklung andere Branches verwenden und diese
dann in den Master-Branch zusammenführen (mergen). Auch das lernst du
später.
</p>
<img src="git-Dateien/branches.png" alt="">
<p>
Erstelle einen neuen Branch mit dem Namen "feature_x" und wechsle zu diesem:<br>
<code>git checkout -b feature_x</code><br>
Um zum Master zurück zu wechseln:<br>
<code>git checkout master</code><br>
Und um den eben erstellten Branch wieder zu löschen:<br>
<code>git branch -d feature_x</code><br>
Ein Branch ist <i>nicht für andere verfügbar</i> bis du diesen in dein entferntes Repository hochlädst:<br>
<code>git push origin <branch></code>
</p>
</div>
<a name="update"></a>
<div class="scrollblock block-merging">
<h2>update & merge</h2>
<p>
Um dein lokales Repository mit den neuesten Änderungen zu aktualisieren, verwende:<br>
<code>git pull</code><br>
in deiner Arbeitskopie um die Änderungen erst <i>herunterzuladen (fetch)</i> und dann mit deinem Stand <i>zusammenzuführen (merge)</i>.<br>
Wenn du einen anderen Branch mit deinem aktuellen (z.B. master) zusammenführen willst, benutze:<br>
<code>git merge <branch></code><br>
In beiden Fällen versucht git die Änderungen automatisch
zusammenzuführen. Unglücklicherweise ist dies nicht immer möglich und
endet in <i>Konflikten</i>,
du bist verantwortlich diese <i>Konflikte</i> durch manuelles editieren der betroffenen Dateien zu lösen.
Bist du damit fertig, musst du das git mit folgendem Befehl mitteilen:<br>
<code>git add <dateiname></code><br>
Bevor du Änderungen zusammenführst, kannst du dir die Differenzen auch anschauen:<br>
<code>git diff <quell_branch> <ziel_branch></code>
</p>
</div>
<a name="tagging"></a>
<div class="scrollblock block-tagging">
<h2>Tagging</h2>
<p>
Es wird empfohlen für Software Releasestags zu verwenden.
Dies ist ein bekanntes Konzept, das es schon mit SVN gab. Du kannst
einen neuen Tag namens <i>1.0.0</i> mit folgendem Befehl erstellen:<br>
<code>git tag 1.0.0 1b2e1d63ff</code><br>
<i>1b2e1d63ff</i> steht für die ersten 10 Zeichen der
Commit-Id, die du mit deinem Tag referenzieren möchtest. Du erhältst die
liste der Commit-Ids mit: <br>
<code>git log</code><br>
Du kannst auch weniger Zeichen verwenden, es muss einfach eindeutig sein.
</p>
</div>
<a name="checkout-replace"></a>
<div class="scrollblock block-checkout-replace">
<h2>Änderungen rückgängig machen</h2>
<p>
Falls du mal etwas falsch machst (was natürlich nie passiert ;) ) kannst du die lokalen Änderungen mit:<br>
<code>git checkout -- <filename></code><br>
auf den letzten stand im HEAD zurücksetzen. Änderungen die du bereits zum Index hinzugefügt hast, bleiben bestehen.
</p>
<p>
Wenn du aber deine lokalen Änderungen komplett entfernen
möchtest, holst du dir den letzten Stand vom entfernten Repository mit
folgenden Befehlen:<br>
<code>git fetch origin</code><br>
<code>git reset --hard origin/master</code>
</p>
</div>
<a name="hints"></a>
<div class="scrollblock block-hints">
<h2>Nützliche Tricks</h2>
<p>
Eingebaute git-GUI:<br>
<code>gitk</code><br>
Farbige konsolenausgabe:<br>
<code>git config color.ui true</code><br>
Eine Zeile pro Commit in der Logausgabe:<br>
<code>git config format.pretty oneline</code><br>
Interaktives hinzufügen von Änderungen:<br>
<code>git add -i</code>
</p>
</div>
<a name="resources"></a>
<div class="scrollblock block-resources">
<h2>Links</h2>
<h3>Grafische Clients</h3>
<p>
</p><ul>
<li><a href="http://gitx.laullon.com/">GitX (L) (OSX, Open Source)</a></li>
<li><a href="http://www.git-tower.com/">Tower (OSX)</a></li>
<li><a href="http://www.sourcetreeapp.com/">Source Tree (OSX, kostenlos)</a></li>
<li><a href="http://mac.github.com/">GitHub for Mac (OSX, kostenlos)</a></li>
</ul>
<p></p>
<h3>Anleitungen</h3>
<p>
</p><ul>
<li><a href="http://book.git-scm.com/">Git Community Book</a></li>
<li><a href="http://progit.org/book/">Pro Git</a></li>
<li><a href="http://think-like-a-git.net/">Think like a git</a></li>
<li><a href="http://help.github.com/">GitHub Help</a></li>
<li><a href="http://marklodato.github.com/visual-git-guide/index-en.html">A Visual Git Guide</a></li>
</ul>
<p></p>
</div>
<a name="comments"></a>
<div class="scrollblock block-comments">
<h2>Kommentare</h2>
<div id="disqus_thread"><iframe verticalscrolling="no" horizontalscrolling="no" src="git-Dateien/a.html" style="width: 100%; border: medium none; overflow: hidden; height: 1792px;" role="application" allowtransparency="true" data-disqus-uid="1" id="dsq1" frameborder="0" scrolling="no" width="100%"></iframe><iframe src="git-Dateien/client.html" style="width: 100%; border: medium none; overflow: hidden; display: none;" role="application" allowtransparency="true" data-disqus-uid="3" id="dsq3" frameborder="0" width="100%"></iframe><iframe style="width: 600px; border: medium none; overflow: hidden; top: 0px; position: fixed; height: 29px; display: none;" role="application" allowtransparency="true" data-disqus-uid="-indicator-north" id="dsq-indicator-north" frameborder="0" scrolling="no"></iframe><iframe style="width: 600px; border: medium none; overflow: hidden; bottom: 0px; position: fixed; height: 29px; display: none;" role="application" allowtransparency="true" data-disqus-uid="-indicator-south" id="dsq-indicator-south" frameborder="0" scrolling="no"></iframe></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'git-the-simple-guide'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
<a href="http://www.git-tower.com/?source=rd" onclick="recordOutboundLink(this, 'Outbound Links', 'git-tower.com');return false;" class="tower"></a>
<a href="http://rogerdudler.github.com/git-guide/files/git_cheat_sheet.pdf" onclick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a>
</body></html>