Die Git-Grundlagen TL;DR
Als ich vor zehn Jahren studierte, hörte ich einen Professor sagen: „Git ist sehr mächtig, aber die meisten Leute benutzen…
Als ich vor zehn Jahren studierte, hörte ich einen Professor sagen: „Git ist sehr mächtig, aber die meisten Leute benutzen nur etwa 12 Befehle“. Es ist unvermeidlich, dass Sie in der Merge-Hölle landen oder rebasen müssen, aber das würde den Rahmen dieses Artikels sprengen. Ich werde versuchen, den einzigen Git-Workflow zu beschreiben, den Sie jemals brauchen werden, bis Ihr Projekt wirklich groß oder wirklich schwierig wird. In den folgenden Befehlen erkläre ich die einzelnen Befehle, damit Sie wissen, was sie bewirken. Hier sind einige Git-Grundlagen.
(Diese Anleitung setzt voraus, dass Sie ein GitHub-Konto und einen damit verbundenen ssh-Schlüssel haben. Wenn Sie noch kein Konto haben, können Sie sich hier ein Konto einrichten und diese Anweisungen befolgen, um einen ssh-Schlüssel zu erzeugen und zu Ihrem Konto hinzuzufügen. Dies ist mein Versuch, eine Anleitung mit den wichtigsten Git-Befehlen für die Mitarbeit an Open Source zu schreiben, ohne Ihnen den ganzen Tag zu stehlen und Sie für immer zu befähigen).
Hier ist ein toller Comic von XKCD über git
.
Git-Grundlagen
Legen Sie ein oder zwei Verzeichnisse auf Ihrem Computer an, damit Sie leicht wissen, wo Sie stehen. Ich lege gerne eine Verzeichnisstruktur wie diese github.com/marcussorealheis/ an, damit mein lokaler Pfad dem im Web ähnelt.
Also:
mkdir github.com
cd github.com
mkdir marcussorealheis #use your username not mine, unless you really want to!
Um zu beginnen, müssen wir ein Repo von einem entfernten Ort, in diesem Fall von GitHub, holen. Aber bevor wir das tun, werden wir es als unser eigenes forken, damit alles für die Arbeit vorbereitet ist.
Ich mag Lucene-Solr (offensichtlich), also besuchen Sie https://github.com/apache/lucene-solr. Oben rechts auf der Seite befindet sich eine Schaltfläche „Fork“. Klicken Sie auf die Schaltfläche fork.
Jetzt befinden Sie sich auf einem eigenen Repo, wo Sie arbeiten sollten, wenn Sie zur Arbeit eines anderen beitragen wollen.
Rechts auf der Seite sehen Sie eine grüne Schaltfläche mit der Aufschrift „Klonen oder Herunterladen“. Klicken Sie auf diese Schaltfläche und kopieren Sie den Text, der mit „git“ beginnt.
Der Text sollte lauten: git@github.com:marcussorealheis/lucene-solr.git. Von nun an wird der Blog sehr kurz sein, etwas rechthaberisch und hauptsächlich aus Code bestehen. Lassen Sie uns eintauchen:
1) Klonen Sie das Repository
git clone git@github.com:apache/lucene-solr.git # pulls the repo down on master branch so you can have a local copy
2) Errichten Sie die entfernte Zweigstelle
git remote add upstream https://github.com/apache/lucene-solr.git # add the remote repo
git fetch # pull it down
^ Eigentlich zwei Befehle, aber Sie können den einen nicht ohne den anderen ausführen. Also ein Schritt.
3) Machen Sie einen Zweig
Ich setze meinen Zweigen gerne ein Präfix voran, mit dem sie leicht zu kategorisieren sind, z.B. bugfix
enhancement
feature
oder hotfix
, wenn ich etwas bearbeite, das eine Version betrifft. Oftmals beginnen Sie mit einem Release-Zweig und nicht mit dem Master-Zweig. Bei einigen Projekten müssen Tickets im Zweignamen enthalten sein, aber ich füge diese normalerweise in der Git-Benutzeroberfläche hinzu.
git checkout -b enhancement/clarify-ago-log # creates a new copy because you should NEVER change master directly
Nehmen Sie Ihre Änderungen vor. (Ich habe ein kleines Problem mit den Abständen in einem weniger häufig verwendeten Konsolenprotokoll auf der Solr-Administrationsseite behoben).
4) Überprüfen Sie die Zusammenfassung der Änderungen in Ihrem Code, damit wir wissen, was wir übertragen müssen.
git status # maybe the single most helpful command for you
5) Stellen Sie Ihre Änderungen zur Übergabe bereit
git add webapp/web/libs/ngtimeago.js # this stages my changes for commit
6) Bestätigen Sie Ihre Änderungen
git commit -m "fix the spacing in ngtimeago" # add a short and clear summary of your changes
7) Schieben Sie Ihre Änderungen nach oben
git push # actually this won't work because you need to establish an upstream branch for your changes
Kopieren Sie, was im Terminal steht, und führen Sie den Befehl aus:
git push --set-upstream origin enhancement/clarify-ago-log
Drücken Sie erneut:
git push
Sie sollten einen gelben Balken und eine Schaltfläche sehen, die Sie auffordert, zu vergleichen und einen Pull Request zu erstellen. Es sieht so aus:
Klicken Sie auf diese Schaltfläche und Sie können Ihre Änderungen in der GitHub-Benutzeroberfläche überprüfen. Sie sieht dann so aus:
Sie sind fertig. Sie haben ein grundlegendes Verständnis von Git und können sich mit einigen Open-Source-Projekten beschäftigen. Die fünf anderen Befehle, die Sie kennen sollten (da wir --set-upstream
verwenden mussten), sind:
1) git init # creates a .git/ dir in your project folder to initialize version control
2) git reset -- HEAD # overwrite all your local changes to reset to the remote repo
3) git remote -v # allows you to check that your remote repo is correctly set as your origin and the original repo is upstream
Wenn Sie das jemals reparieren müssen, sehen Sie hier nach: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
4) git merge upstream/master # if your local copy got behind and you want to sync changes from upstream
5) git stash # you made some local changes that you rather set aside, to keep moving. If you might need the code later, keep the stash ID in a handy place.
Es gibt eigentlich viel mehr zu
git
als das, was in diesem Beitrag enthalten ist, aber es ist ein Anfang. Wenn Sie mehr Hilfe benötigen, lassen Sie es mich wissen.
Bonus-Profi-Tipp: Wenn Sie wissen möchten, auf welchem Zweig Sie sich befinden, iTerm2 verwenden und mit Mac OSX arbeiten, fügen Sie dies zu Ihrem ~/.bashrc
hinzu:
function iterm2_print_user_vars() { iterm2_set_user_var gitStatus "$(gitStatus)" }
Mehr erfahren
- Lesen Sie weitere technische Tipps und Tricks
- Nehmen Sie Kontakt mit uns auf, wir würden uns freuen, von Ihnen zu hören!