Update: Beachten Sie, dass die derzeit akzeptierte Antwort ein häufiges Missverständnis über das Verhalten von darstellt git push
, das trotz eines Kommentars, der darauf hinweist, nicht korrigiert wurde.
Ihre Zusammenfassung der Fernbedienungen - wie ein Spitzname für die URL eines Repositorys - ist korrekt.
Warum also git die URL nicht git: //git@github.com/peter/first_app.git, sondern in der anderen Syntax - welche Syntax ist das? Warum muss es mit .git enden? Ich habe am Ende versucht, .git nicht zu verwenden und es funktioniert auch. Wenn nicht .git, was kann es sonst sein? Der Git am Anfänger scheint ein Benutzerkonto auf dem Git-Server zu sein?
Die beiden von Ihnen erwähnten URLs geben an, dass zwei verschiedene Transportprotokolle verwendet werden sollten. Der erste beginnt mit git://
dem Git-Protokoll, das normalerweise nur für den schreibgeschützten Zugriff auf Repositorys verwendet wird. Die andere git@github.com:peter/first_app.git
ist eine der verschiedenen Möglichkeiten, den Zugriff auf ein Repository über SSH festzulegen - dies ist die in der Dokumentation beschriebene "scp-artige Syntax" . Der Benutzername in der Syntax im scp-Stil beruht git
auf der Art und Weise, wie GitHub mit der Identifizierung von Benutzern umgeht. Im Wesentlichen wird dieser Benutzername ignoriert und der Benutzer wird anhand des SSH-Schlüsselpaars identifiziert, das er zur Authentifizierung verwendet hat.
Was die Ausführlichkeit von betrifft git push origin master
, haben Sie bemerkt, dass Sie dies nach dem ersten Druck einfach tun können git push
. Dies liegt an einer Reihe von schwer zu merkenden, aber allgemein hilfreichen Standardeinstellungen :)
- Wenn keine Fernbedienung angegeben ist, wird die für den aktuellen Zweig (
remote.master.url
in Ihrem Fall) konfigurierte Fernbedienung verwendet. Wenn das nicht eingerichtet ist, origin
wird es verwendet.
- Wenn es keine „Refspec“ (zB
master
, master:my-experiment
usw.) angegeben, dann git standardmäßig alle lokalen Zweig drängen, die den gleichen Namen wie ein Zweig auf der Fernbedienung hat. Wenn Sie nur einen Zweig haben, der master
zwischen Ihrem Repository und dem Remote-Repository gemeinsam aufgerufen wird, entspricht dies dem Verschieben Ihres Zweigs master
an die Remote master
.
Persönlich benutze ich immer das Formular, da ich dazu neige, viele Themenbereiche (und oft mehrere Fernbedienungen) zu haben:
git push origin master
... um ein versehentliches Drücken anderer Zweige zu vermeiden.
In der Antwort auf Ihre Kommentare zu einem der anderen Antworten, klingt es mir , als ob ich sehr effektiv in einem Top-down - Weg über git Lernen - Sie haben entdeckt , dass die Standardeinstellungen arbeiten, und Ihre Frage zu fragen , warum;) Zur Ernsthafter sein, kann GitIm Wesentlichen so einfach wie SVN verwendet werden, aber wenn Sie ein wenig über Fernbedienungen und Zweige wissen, können Sie es viel flexibler verwenden, und dies kann Ihre Arbeitsweise wirklich zum Besseren verändern. Ihre Bemerkung zu einem Semesterkurs lässt mich an etwas denken, das Scott Chacon in einem Podcast-Interview gesagt hat - die Schüler werden über alle Arten grundlegender Werkzeuge in der Informatik und Softwareentwicklung unterrichtet, aber sehr selten über die Versionskontrolle. Verteilte Versionskontrollsysteme wie git und Mercurial sind jetzt so wichtig und flexibel, dass es sich lohnt, Kurse darüber zu unterrichten, um den Menschen eine gute Grundlage zu geben.
Ich bin der Meinung, dass sich git
diese Lernkurve absolut lohnt - mit vielen Themenzweigen zu arbeiten, sie einfach zusammenzuführen und zwischen verschiedenen Repositorys zu verschieben und zu ziehen, ist fantastisch nützlich, wenn Sie sich mit dem System vertraut gemacht haben. Es ist nur bedauerlich, dass:
- Die primäre Dokumentation für Git ist für Neulinge so schwer zu analysieren. (Obwohl ich behaupten würde, dass, wenn Sie für fast jede Git-Frage googeln, heutzutage hilfreiches Tutorial-Material (oder Stack Overflow-Antworten :)) auftaucht.)
- Es gibt ein paar seltsame Verhaltensweisen in Git, die derzeit schwer zu ändern sind, da viele Skripte möglicherweise auf ihnen basieren, aber für die Leute verwirrend sind.
git@github.com:peter/first_app.git
diescp
Syntax im Stil von SSH-URLs in Git ist. Ein weiterer Punkt ist , dass standardmäßig die Upstream - Konfigurationmaster
nicht auf das Verhalten auswirkt ,git push
es sei denn Sie habenpush.default
auftracking
(oderupstream
in späteren Versionen) - Ich habe eine Blog - Post über diese Quelle der Verwirrung: longair.net/blog/2011 / 02/27 /…