324 Stimmen

Was bedeutet "git remote add ..." und "git push origin master"?

Oftmals werden Git und Ruby on Rails sieht aus wie Magie... wie in der erstes Kapitel des Ruby on Rails 3 Tutorial Buches wird über Git gesprochen:

git remote add origin git@github.com:peter/first_app.git
git push origin master

Und es ziemlich viel sagt, "es funktioniert einfach", ohne zu sagen, zu viel über das, was sie sind und beginnen zu sprechen über die Verzweigung. Die Suche im Internet zeigt, dass git remote add ist es, einen "Kurznamen" hinzuzufügen, wie z. B. origin und es kann auch ein beliebiger Name sein, der wie ein Alias für eine URL ist.

Y origin ist der übliche Pfad, auf den das entfernte Repository zeigt (in http://git-scm.com/book/en/Git-Basics-Working-with-Remotes unter "Hinzufügen von entfernten Repositories").

Warum also ist die URL nicht git://git@github.com/peter/first_app.git , aber in der anderen Syntax - welche Syntax ist das? Warum muss sie enden mit .git ? Ich habe versucht, nicht zu verwenden .git am Ende und es funktioniert auch. Wenn nicht .git Was könnte es sonst sein? Die git en git@github.com scheint ein Benutzerkonto auf dem Git-Server zu sein?

Außerdem: Warum muss man so ausführlich sein, wenn man git push origin master ? Kann der Standard nicht Ursprung und Master sein? Ich habe festgestellt, dass beim ersten Mal die origin master benötigt wird, aber nach einer kleinen Bearbeitung und einem Commit, dann git push ist alles, was es braucht (keine Notwendigkeit origin master ). Kann jemand, der weiß, was hier vor sich geht, einige Details nennen?

Manchmal fühlt es sich wie eine Menge Magie ohne Erklärung an... und manchmal ist die Person, die es anwendet, so selbstbewusst und kann es auf die Frage nach dem Warum nicht erklären, sondern antwortet mit so etwas wie "so ist es eben". Manchmal sind sie sehr praktisch und pragmatisch. Es ist nicht schlecht, praktisch zu sein, aber wahrscheinlich nicht so praktisch, dass man nicht weiß, was vor sich geht.

395voto

Noufal Ibrahim Punkte 68934

Git ist wie Unix. Es ist benutzerfreundlich, aber es ist wählerisch, was seine Freunde angeht. Es ist ungefähr so leistungsfähig und benutzerfreundlich wie eine Shell-Pipeline.

Wenn man aber erst einmal die Paradigmen und Konzepte verstanden hat, hat es die gleiche zenartige Klarheit, die ich von Unix-Befehlszeilen-Tools gewohnt bin. Sie sollten sich etwas Zeit nehmen, um eines der vielen guten Git-Tutorials zu lesen, die online verfügbar sind. Die Pro Git Buch ist ein guter Ausgangspunkt.

Um Ihre erste Frage zu beantworten.

  1. Was ist git remote add ... ?

    Wie Sie wahrscheinlich wissen, ist Git ein verteiltes Versionskontrollsystem. Die meisten Operationen werden lokal durchgeführt. Um mit der Außenwelt zu kommunizieren, verwendet Git so genannte "Fernbedienungen" . Dies sind andere Repositories als das auf Ihrer lokalen Festplatte, die Sie drücken. Ihre Änderungen in (damit andere sie sehen können) oder ziehen aus (damit Sie andere Änderungen erhalten können). Der Befehl git remote add origin git@github.com:peter/first_app.git erstellt eine neue Fernbedienung namens origin gelegen bei git@github.com:peter/first_app.git . Sobald Sie dies getan haben, können Sie in Ihren Push-Befehlen auf Herkunft anstatt die gesamte URL abzutippen.

  2. Was ist git push origin master ?

    Dies ist ein Befehl, der besagt, dass "die Übertragungen im lokalen Zweig namens Meister an die entfernte Stelle namens Herkunft ". Sobald dies ausgeführt wird, werden alle Dinge, die Sie zuletzt mit Herkunft werden an das entfernte Repository gesendet und können dort von anderen Personen eingesehen werden.

Nun zu den Transporten (d. h., was git:// ) bedeutet. Die URLs entfernter Repositorys können viele verschiedene Typen haben ( file:// , https:// , usw.). Git verlässt sich einfach auf den Authentifizierungsmechanismus, der vom Transport bereitgestellt wird, um sich um Berechtigungen und anderes zu kümmern. Das bedeutet, dass für file:// URLs, Unix-Dateiberechtigungen usw. Die git:// Schema fordert Git auf, sein eigenes internes Transportprotokoll zu verwenden, das für die Weiterleitung von Git-Änderungssätzen optimiert ist. Was die genaue URL angeht, so ist sie so, wie sie ist, weil GitHub seinen Git-Server eingerichtet hat.

Und jetzt die Ausführlichkeit. Der Befehl, den Sie eingegeben haben, ist der allgemeine Befehl. Es ist möglich, Git etwas mitzuteilen wie "der Zweig namens Meister hier drüben ist ein lokaler Spiegel des Zweigs namens foo auf der Fernbedienung mit der Bezeichnung bar ". In Git-Sprache bedeutet dies, dass Meister Spuren bar/foo . Wenn Sie zum ersten Mal klonen, erhalten Sie einen Zweig namens Meister und eine Fernbedienung namens Herkunft (von dem aus Sie geklont haben), wobei der lokale Master so eingestellt ist, dass er dem Master im Ursprung folgt.

Sobald dies eingerichtet ist, können Sie einfach sagen git push und sie wird es tun. Der längere Befehl ist verfügbar, falls Sie ihn benötigen (z. B., git push in das offizielle öffentliche Repository verschieben und git push review master kann verwendet werden, um an einen separaten Remote-Server zu senden, den Ihr Team zur Überprüfung des Codes verwendet). Sie können Ihren Zweig als Verfolgungszweig festlegen, indem Sie die --set-upstream Option des git branch Befehl.

Ich habe das Gefühl, dass Git (im Gegensatz zu den meisten anderen Anwendungen, die ich verwendet habe) besser von innen heraus verstanden wird. Wenn man erst einmal verstanden hat, wie die Daten im Repository gespeichert und verwaltet werden, werden die Befehle und ihre Funktionen kristallklar. Ich stimme Ihnen zu, dass viele Git-Benutzer etwas elitär sind, aber das habe ich früher auch bei Unix-Benutzern festgestellt, und es hat sich gelohnt, an ihnen vorbei zu arbeiten, um das System zu lernen. Viel Glück!

20voto

Mr. Suryaa Jha Punkte 1366

Schauen Sie sich die Syntax für das Hinzufügen eines entfernten Repositorys an.

git remote add origin <url_of_remote repository>

Exemple :

git remote add origin git@github.com:peter/first_app.git

Lassen Sie uns den Befehl zerlegen:

Git-Fernbedienung Dies dient der Verwaltung Ihrer zentral Server für das Hosting Ihrer Git-Repositories.

Vielleicht verwenden Sie GitHub für Ihr zentrales Repository. Ich werde Ihnen ein Beispiel geben und die git remote add origin Befehl

Angenommen, ich arbeite mit GitHub y Bitbucket für die zentralen Server für die Git-Repositories und habe auf beiden Websites Repositories für meine Erstanmeldung Projekt.

Wenn ich nun meine Änderungen an diese beiden Git-Server weitergeben möchte, muss ich Git mitteilen, wie es diese zentralen Repositories erreichen kann. Ich muss also Folgendes hinzufügen,

Für GitHub

git remote add gh_origin https://github.com/user/first-app-git.git

Und für Bitbucket

git remote add bb_origin https://user@bitbucket.org/user/first-app-git.git

Ich habe zwei Variablen verwendet (soweit es für mich einfach ist, sie als Variablen zu bezeichnen) gh_Herkunft (gh für GitHub ) y bb_Herkunft (bb für Bitbucket ), nur um Ihnen zu erklären, dass wir den Ursprung nennen können, wie wir wollen.

Nachdem ich nun einige Änderungen vorgenommen habe, muss ich diese Änderungen an zentrale Repositories senden (pushen), damit andere Benutzer diese Änderungen sehen können. Ich rufe also

Zu GitHub verschieben

git push gh_origin master

Zu Bitbucket schieben

git push bb_origin master

gh_Herkunft ist der Haltewert von https://github.com/user/first-app-git.git y bb_Herkunft ist der Haltewert von https://user@bitbucket.org/user/first-app-git.git

Diese beiden Variablen machen mir das Leben leichter

da ich jedes Mal, wenn ich meine Code-Änderungen senden muss, diese Wörter verwenden muss, anstatt mich an die URL zu erinnern oder sie einzugeben.

Meistens werden Sie nichts anderes sehen als die Herkunft da Sie in den meisten Fällen nur mit einem zentralen Repository wie z. B. GitHub oder Bitbucket arbeiten werden.

7voto

anshul Punkte 5897
  1. El .git am Ende des Repository-Namens ist nur eine Konvention. Auf Git-Servern werden die Repositorys in der Regel in Verzeichnissen mit den Namen project.git . Der Git-Client und das Protokoll halten sich an diese Konvention, indem sie prüfen, ob project.git wenn nur project angegeben ist.

  2. git://git@github.com/peter/first_app.git ist keine gültige Git-URL. Git-Repositories können über verschiedene URL-Schemata identifiziert und aufgerufen werden ici . git@github.com:peter/first_app.git es el ssh URL auf dieser Seite erwähnt.

  3. Git ist flexibel. Es ermöglicht Ihnen, Ihren lokalen Zweig mit fast jedem Zweig eines beliebigen Repositorys zu vergleichen. Während master (Ihre lokale Standardverzweigung) verfolgen origin/master (die entfernte Standardverzweigung) ist eine weit verbreitete Situation, aber sie ist nicht universell. In vielen Fällen möchten Sie dies nicht tun. Aus diesem Grund ist die erste git push ist so langatmig. Es sagt Git, was es mit den lokalen Daten machen soll. master Zweig, wenn Sie eine git pull oder eine git push .

  4. Der Standardwert für git push y git pull ist es, mit dem aktuellen Zweig zu arbeiten. Dies ist ein besserer Standard als origin master. Der Weg git push bestimmt dies wird erklärt ici .

git ist ziemlich elegant und verständlich, aber es gibt eine Lernkurve, die man durchlaufen muss.

0voto

Ravi R Punkte 1554

Dies ist eine Antwort auf diese Frage ( Heroku App in ein neues GitHub Repo exportieren ), der als Duplikat dieses Artikels markiert und hierher weitergeleitet wurde.

Ich wollte mein Repository spiegeln von Heroku zu GitHub Personal, damit es alle Commits usw. anzeigt, die ich auch in Heroku gemacht habe. Importieren eines Git-Repositorys über die Befehlszeile in der GitHub-Dokumentation nützlich war.

-1voto

SaiPutta Punkte 1

Git remote add origin:

Es zentralisiert Ihren Quellcode für die anderen Projekte. Es wird auf Basis von Linux entwickelt, Es ist vollständig quelloffen und macht Ihren Code für die anderen Git-Benutzer nutzbar. Wir bezeichnen es als Referenz.

Es pusht Ihren Code in das Git-Repository unter Verwendung der Remote-URL von GitHub.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X