{"id":395,"date":"2010-12-14T18:00:16","date_gmt":"2010-12-14T17:00:16","guid":{"rendered":"http:\/\/www.psj-world.de\/wp2\/?p=395"},"modified":"2019-03-07T17:34:15","modified_gmt":"2019-03-07T16:34:15","slug":"git-remote-repository-anlegen-und-pushen","status":"publish","type":"post","link":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/","title":{"rendered":"GIT: Remote-Repository anlegen und pushen"},"content":{"rendered":"<h3 id=\"Verwalten-von-Repositories\">Verwalten von Repositories<\/h3>\n<p>Die Verwaltung von Repositories und (wie wir sp\u00e4ter sehen werden)  von Benutzern geschieht bei Gitosis \u00fcber ein eigens daf\u00fcr vorgesehenes  Git-Repository, welches bei der Installation auf dem Server erzeugt  wurde. Es l\u00e4sst sich wie folgt auf dem Client klonen:<\/p>\n<pre>cd ~\/Projects\r\ngit clone git@SERVER:gitosis-admin.git\r\n<\/pre>\n<p>SERVER ist wiederum durch den Namen des Servers zu ersetzen. Da wir  vorhin den eigenen \u00f6ffentlichen SSH-Schl\u00fcssel auf den Server kopiert  haben, ist kein Passwort notwendig.<\/p>\n<p>Das Repository besteht grunds\u00e4tzlich aus der Datei <code>gitosis.conf<\/code> zur Verwaltung der Repositories und Benutzer sowie dem Verzeichnis <code>keydir<\/code>, in dem die SSH-Schl\u00fcssel ablegt sind:<\/p>\n<pre>$ cd gitosis-admin\/\r\n$ ls -ln\r\ntotal 8\r\n-rw-r--r--  1 501  20  167  3 Jan 19:57 gitosis.conf\r\ndrwxr-xr-x  4 501  20  136  3 Jan 19:57 keydir\r\n<\/pre>\n<p>Die Datei <code>gitosis.conf<\/code> enth\u00e4lt im initialen Zustand folgende Zeilen:<\/p>\n<pre>[gitosis]\r\n\r\n[group gitosis-admin]\r\nwritable = gitosis-admin\r\nmembers = tom@mymac\r\n<\/pre>\n<p>Der Abschnitt &#8222;group gitosis-admin&#8220; definiert eine neue  Benutzergruppe mit dem Namen &#8222;gitosis-admin&#8220;, die Schreibzugriff auf das  Repository &#8222;gitosis-admin&#8220; hat und derzeit nur aus einem Mitglied  &#8222;tom@mymac&#8220; besteht. &#8222;tom&#8220; ist hierbei mein lokaler Benutzername,  &#8222;mymac&#8220; der Name meines Client-Rechners. Entsprechend enth\u00e4lt das  Verzeichnis <code>keydir<\/code> eine Datei mit dem Namen <code>tom@mymac.pub<\/code>.<\/p>\n<p>Ein neues Repository kann nun erzeugt werden, in dem folgende Zeilen der Datei <code>gitosis.conf<\/code> hinzuf\u00fcgt werden:<\/p>\n<pre>[group developers]\r\nwritable = test\r\nmembers = tom@mymac\r\n<\/pre>\n<p>Das Repository hat hier den Namen &#8222;test&#8220;, geh\u00f6rt zur Gruppe  &#8222;developers&#8220; und nur mein eigener Benutzer &#8222;tom@mymac&#8220; hat darauf  Schreibrechte. Im Prinzip h\u00e4tte es auch ausgereicht, den Bezeichner  &#8222;test&#8220; an die obige Zeile &#8222;writable = gitosis-admin&#8220; mit Leerzeichen  getrennt anzuh\u00e4ngen. Es ist aber aus meiner Sicht sinnvoll, gleich von  Anfang an die Repositories f\u00fcr Projekte vom Repository f\u00fcr die  administrativen Aufgaben zu unterscheiden.<\/p>\n<p>Nach Speichern der Datei <code>gitosis.conf<\/code> wird nun gitosis-admin eingecheckt und auf den Server geschoben (&#8222;push&#8220;):<\/p>\n<pre>git commit -a -m \"Created repository test.\"\r\ngit push\r\n<\/pre>\n<p>Damit hat &#8222;tom@mymac&#8220; Zugriff auf das Repository  &#8222;git@SERVER:test.git&#8220;, das Repository selbst existiert aber noch nicht  und muss entsprechend angelegt werden:<\/p>\n<pre>cd ~\/Projects\r\nmkdir test\r\ncd test\r\ngit init\r\ngit remote add origin git@SERVER:test.git\r\n<\/pre>\n<p>Hat man bereits ein Projektverzeichnis (egal ob mit oder ohne  Dateien), kann der Aufruf von &#8222;mkdir test&#8220; entfallen.  Anschlie\u00dfend  k\u00f6nnen Dateien dem Projekt hinzugef\u00fcgt und eingecheckt werden. Beispiel:<\/p>\n<pre>echo \"This is a test file.\" &gt; README\r\ngit add README\r\ngit commit -m \"Initial revision.\"\r\n<\/pre>\n<p>Beim &#8222;push&#8220; auf den Server wird schlussendlich das Repository erzeugt:<\/p>\n<pre>git push origin master:refs\/heads\/master\r\n<\/pre>\n<h3 id=\"Verwalten-von-Benutzern\">Verwalten von Benutzern<\/h3>\n<p>Bisher hat auf das erzeugte Test-Repository lediglich der Benutzer  &#8222;tom@mymac&#8220; Lese- und Schreibzugriff. Weitere Benutzer mit denselben  Rechten k\u00f6nnen erstellt werden, indem diese dem Admin ihren \u00f6ffentlichen SSH -Schl\u00fcssel zur Verf\u00fcgung stellen. Angenommen, der Benutzer  &#8222;joey@hismac&#8220; schickt seinen Schl\u00fcssel, dann sind folgende Schritte  durchzuf\u00fchren:<\/p>\n<pre>cd ~\/Project\/gitosis-admin\r\ncp ~\/Download\/joey@hismac keydir\r\n<\/pre>\n<p>In der Datei gitosis.conf ist der Benutzer der Gruppe &#8222;developers&#8220; hinzuzuf\u00fcgen:<\/p>\n<pre>[group developers]\r\nwritable = test\r\nmembers = tom@mymac joey@hismac\r\n<\/pre>\n<p>Dann weiter im Terminal:<\/p>\n<pre>git add .\r\ngit commit -m \"Added joey to project test.\"\r\ngit push\r\n<\/pre>\n<p>Will man das Repository hingegen f\u00fcr die Allgemeinheit mit  Leserechten ver\u00f6ffentlichen (also ohne Abfrage von Benutzername und  Passwort), muss auf dem Server die Datei <code>git-daemon-export-ok<\/code> innerhalb des Repositories erzeugt werden,<\/p>\n<pre>sudo touch \/home\/git\/repositories\/test.git\/git-daemon-export-ok<\/pre>\n<p>und ist dann wie folgt klonbar:<\/p>\n<pre>git clone git:\/\/SERVER\/test.git<\/pre>\n<p>Damit endet dieser Artikel \u00fcber Gitosis. F\u00fcr weitere Dokumentation sei auf die README-Datei von gitosis verwiesen.<\/p>\n<p>Kommentare, Fragen und Kritik sind wie immer herzlich willkommen.<\/p>\n<p>Mit den folgenden Zeilen l\u00e4sst sich f\u00fcr ein bestehendes lokales Repository ein Remote-Repository auf einem Gitosis anlegen und pushen:<\/p>\n<pre># git remote add origin gitosis@servername:project.git\r\n# git push origin master:refs\/heads\/master (Zuvor muss mindestens ein Commit bestehen.)<\/pre>\n<p>Konfiguration anpassen<br \/>\nDa das lokale Repository noch nicht mit dem Remote-Repository verkn\u00fcpft wurde, muss nun die Konfiguration entsprechend angepasst werden. Dazu sind folgende Zeilen n\u00f6tig:<\/p>\n<pre># git config branch.master.merge refs\/heads\/master\r\n# git config branch.master.remote origin<\/pre>\n<p>Danach kann das Repository auch ganz regul\u00e4r mit git fetch und git pull synchronisiert werden. Wird ein Remote-Repository auf das lokale System geklont, besteht diese Konfiguration bereits. So kann auch alternativ das Repository gel\u00f6scht und vom Remote neu geklont werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Verwalten von Repositories Die Verwaltung von Repositories und (wie wir sp\u00e4ter sehen werden) von Benutzern geschieht bei Gitosis \u00fcber ein eigens daf\u00fcr vorgesehenes Git-Repository, welches bei der Installation auf dem Server erzeugt wurde. Es l\u00e4sst sich wie folgt auf dem Client klonen: cd ~\/Projects git clone git@SERVER:gitosis-admin.git SERVER ist wiederum durch den Namen des Servers [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66],"tags":[133,134],"class_list":["post-395","post","type-post","status-publish","format-standard","hentry","category-computer","tag-git","tag-versionskontrolle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GIT: Remote-Repository anlegen und pushen - Apfelblog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GIT: Remote-Repository anlegen und pushen - Apfelblog\" \/>\n<meta property=\"og:description\" content=\"Verwalten von Repositories Die Verwaltung von Repositories und (wie wir sp\u00e4ter sehen werden) von Benutzern geschieht bei Gitosis \u00fcber ein eigens daf\u00fcr vorgesehenes Git-Repository, welches bei der Installation auf dem Server erzeugt wurde. Es l\u00e4sst sich wie folgt auf dem Client klonen: cd ~\/Projects git clone git@SERVER:gitosis-admin.git SERVER ist wiederum durch den Namen des Servers [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/\" \/>\n<meta property=\"og:site_name\" content=\"Apfelblog\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-14T17:00:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-07T16:34:15+00:00\" \/>\n<meta name=\"author\" content=\"Jens Appel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jens Appel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/\"},\"author\":{\"name\":\"Jens Appel\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/#\\\/schema\\\/person\\\/4ff0549059f01ca0953cd95d2f373f47\"},\"headline\":\"GIT: Remote-Repository anlegen und pushen\",\"datePublished\":\"2010-12-14T17:00:16+00:00\",\"dateModified\":\"2019-03-07T16:34:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/\"},\"wordCount\":546,\"keywords\":[\"git\",\"versionskontrolle\"],\"articleSection\":[\"Computer\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/\",\"url\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/\",\"name\":\"GIT: Remote-Repository anlegen und pushen - Apfelblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/#website\"},\"datePublished\":\"2010-12-14T17:00:16+00:00\",\"dateModified\":\"2019-03-07T16:34:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/#\\\/schema\\\/person\\\/4ff0549059f01ca0953cd95d2f373f47\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/git-remote-repository-anlegen-und-pushen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GIT: Remote-Repository anlegen und pushen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/#website\",\"url\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/\",\"name\":\"Apfelblog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/#\\\/schema\\\/person\\\/4ff0549059f01ca0953cd95d2f373f47\",\"name\":\"Jens Appel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g\",\"caption\":\"Jens Appel\"},\"sameAs\":[\"https:\\\/\\\/www.leppa.de\"],\"url\":\"https:\\\/\\\/www.leppa.de\\\/wp2\\\/author\\\/dix\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GIT: Remote-Repository anlegen und pushen - Apfelblog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/","og_locale":"de_DE","og_type":"article","og_title":"GIT: Remote-Repository anlegen und pushen - Apfelblog","og_description":"Verwalten von Repositories Die Verwaltung von Repositories und (wie wir sp\u00e4ter sehen werden) von Benutzern geschieht bei Gitosis \u00fcber ein eigens daf\u00fcr vorgesehenes Git-Repository, welches bei der Installation auf dem Server erzeugt wurde. Es l\u00e4sst sich wie folgt auf dem Client klonen: cd ~\/Projects git clone git@SERVER:gitosis-admin.git SERVER ist wiederum durch den Namen des Servers [&hellip;]","og_url":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/","og_site_name":"Apfelblog","article_published_time":"2010-12-14T17:00:16+00:00","article_modified_time":"2019-03-07T16:34:15+00:00","author":"Jens Appel","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Jens Appel","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/#article","isPartOf":{"@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/"},"author":{"name":"Jens Appel","@id":"https:\/\/www.leppa.de\/wp2\/#\/schema\/person\/4ff0549059f01ca0953cd95d2f373f47"},"headline":"GIT: Remote-Repository anlegen und pushen","datePublished":"2010-12-14T17:00:16+00:00","dateModified":"2019-03-07T16:34:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/"},"wordCount":546,"keywords":["git","versionskontrolle"],"articleSection":["Computer"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/","url":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/","name":"GIT: Remote-Repository anlegen und pushen - Apfelblog","isPartOf":{"@id":"https:\/\/www.leppa.de\/wp2\/#website"},"datePublished":"2010-12-14T17:00:16+00:00","dateModified":"2019-03-07T16:34:15+00:00","author":{"@id":"https:\/\/www.leppa.de\/wp2\/#\/schema\/person\/4ff0549059f01ca0953cd95d2f373f47"},"breadcrumb":{"@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.leppa.de\/wp2\/git-remote-repository-anlegen-und-pushen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.leppa.de\/wp2\/"},{"@type":"ListItem","position":2,"name":"GIT: Remote-Repository anlegen und pushen"}]},{"@type":"WebSite","@id":"https:\/\/www.leppa.de\/wp2\/#website","url":"https:\/\/www.leppa.de\/wp2\/","name":"Apfelblog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.leppa.de\/wp2\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/www.leppa.de\/wp2\/#\/schema\/person\/4ff0549059f01ca0953cd95d2f373f47","name":"Jens Appel","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/81dac5b63aa0eaab2fd31582d1f97fa50c7ec3d382260c9d336357f32f471783?s=96&d=mm&r=g","caption":"Jens Appel"},"sameAs":["https:\/\/www.leppa.de"],"url":"https:\/\/www.leppa.de\/wp2\/author\/dix\/"}]}},"_links":{"self":[{"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/posts\/395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/comments?post=395"}],"version-history":[{"count":10,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/posts\/395\/revisions"}],"predecessor-version":[{"id":1161,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/posts\/395\/revisions\/1161"}],"wp:attachment":[{"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/media?parent=395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/categories?post=395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leppa.de\/wp2\/wp-json\/wp\/v2\/tags?post=395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}