ebody: Warum kann jeder Änderungen an der readme Datei in meinem Github Repository vornehmen?

Hallo,

ich habe auf github.com ein Repository erstellt und geklont. Auf meinem PC habe ich Änderungen an der readme Datei vorgenommen. In meiner lokalen Konfigurationsdatei habe ich einen anderen User eingetragen. Dieser ist nicht als Collaborator in dem github Repository welches ich klone eingetragen.

Der Main Branch ist geschützt:

  1. Require pull request reviews before merging
  2. Require status checks to pass before merging

Mit git push sende ich meinen lokal erstellten Commit an das Repository auf github und die Änderung an der readme wird sofort übernommen.

Wie kann ich das verhindern, so dass ich als Github Repository "Inhaber" die Änderung erstmal prüfen kann und sie nicht automatisch übernommen wird?

Gruß ebody

  1. Hallo

    Erstmal sei gesagt, dass nicht „jeder“ deine Readme/dein Repo ändern kann. Dein Betreff ist in dieser Hinsicht irreführend formuliert. Der Commit wird, selbst wenn er von einem anderen Autor stammt, aber übernommen, wenn er von jemandem mit den passenden Zugriffsrechten übermittelt wird, und das warst ja wohl du selbst mit den passenden Zugangsdaten für deinen Github-Account, oder?

    Wie kann ich das verhindern, so dass ich als Github Repository "Inhaber" die Änderung erstmal prüfen kann und sie nicht automatisch übernommen wird?

    Du kannst in den Einstellungen des Repositories unter „Branches“ Schutzregeln erstellen, um bestimmte Branches vor ungeprüften Commits zu schützen (und noch diverser andere Schnickschnack).

    Tschö, Auge

    --
    Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
    Hohle Köpfe von Terry Pratchett
    1. Der Commit wird, selbst wenn er von einem anderen Autor stammt, aber übernommen, wenn er von jemandem mit den passenden Zugriffsrechten übermittelt wird, und das warst ja wohl du selbst mit den passenden Zugangsdaten für deinen Github-Account, oder?

      Den Commit habe ich aber mit einem anderen Github Profil gesendet (In der Git Konfigurationsdatei festgelegt). Nicht mit dem Profil, welcher der Repository "Inhaber" auf Github ist. Das habe ich mit 2 anderen Github Profilen getestet, daher kann anscheinend jeder eine Änderung vornehmen.

      Gruß ebody

      1. Hallo

        Der Commit wird, selbst wenn er von einem anderen Autor stammt, aber übernommen, wenn er von jemandem mit den passenden Zugriffsrechten übermittelt wird, und das warst ja wohl du selbst mit den passenden Zugangsdaten für deinen Github-Account, oder?

        Den Commit habe ich aber mit einem anderen Github Profil gesendet (In der Git Konfigurationsdatei festgelegt). Nicht mit dem Profil, welcher der Repository "Inhaber" auf Github ist.

        Ich habe schon verstanden, dass in der Konfiguration des Repos andere Benutzerdaten abgelegt sind, als die zu deinem Github-Account passenden. Aber zu Github übertragen kannst du sie nur mit den zum Github-Account passenden Benutzerdaten haben.

        Das habe ich mit 2 anderen Github Profilen getestet, daher kann anscheinend jeder eine Änderung vornehmen.

        Wenn du einen Commit (von wem auch immer der stammt) auf dein Repo mit deinen Github-Zugangsdaten überträgst, bist du immer noch nicht „jeder“.

        Tschö, Auge

        --
        Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
        Hohle Köpfe von Terry Pratchett
        1. Ahhh ok. Da bin ich durcheinander gekommen. Für andere Beginner (wie mich) möchte ich hier noch festhalten:

          • Der eingetragene User in den globalen Einstellungen, ist der User der in den Commits als Autor genannt wird.
          • In den lokalen Einstellungen könnte man einen anderen Nutzer eintragen. Dann würde dieser als Autor in den Commits gelistet.

          Beides hat nichts mit Github Login Daten zu tun.

          Pusht man ein lokales Repository ans remote Repository auf github.com, öffnet sich ein Github Login Fenster (zumindest bei mir). Sobald man die Logindaten eingibt, wird der Push ausgeführt.

          Wenn der Github Username Max lautet und man als User in den globalen Einstellungen Moritz eingegeben hat, wird im Commit lokal und auf Github Moritz als Autor stehen.

          Damit man nicht immer wieder die Logindaten eingeben muss, kann man https://github.com/microsoft/Git-Credential-Manager-Core installieren.

          In den globalen Einstellungen steht bei mir

          [credential]
          	helper = manager-core
          

          Loggt man sich jetzt einmal ein, werden die Github Logindaten gespeichert.

          Da ich mit verschiedenen Github Accounts klonen und Zusammenarbeit u.a. getestet habe, entstand das von mir beschriebene Problem. Ich übergab das lokale Repository immer wieder an das remote Repository auf githhub.com mit dem Github Account der auch der Inhaber des remote Repositories ist. Daher wurden alle Änderungen direkt übernommen.

          Um mich jetzt mit einem anderen Github Account autmomatisch einzuloggen und das lokale Repository an das remote Repository zu übergeben, musste ich:

          In der Windowssuche "Anmeldeinformationsverwaltung" eingeben, dann auf das Ergebnis "Anmeldeinformationsverwaltung" klicken.

          In dem Fenster was sich öffnet auf "Windows-Anmeldeinformationen" klicken

          und dann nach einem Eintrag "git:https://github.com" suchen. Hier kann man die Logindaten entweder ändern oder löschen.

          Ich hoffe ich habe nichts vergessen und es richtig beschrieben.

          Gruß ebody

          1. Hallo

            Ahhh ok. Da bin ich durcheinander gekommen. Für andere Beginner (wie mich) möchte ich hier noch festhalten:

            • Der eingetragene User in den globalen Einstellungen, ist der User der in den Commits als Autor genannt wird.
            • In den lokalen Einstellungen könnte man einen anderen Nutzer eintragen. Dann würde dieser als Autor in den Commits gelistet.

            Beides hat nichts mit Github Login Daten zu tun.

            Pusht man ein lokales Repository ans remote Repository auf github.com, öffnet sich ein Github Login Fenster (zumindest bei mir). Sobald man die Logindaten eingibt, wird der Push ausgeführt.

            Wenn der Github Username Max lautet und man als User in den globalen Einstellungen Moritz eingegeben hat, wird im Commit lokal und auf Github Moritz als Autor stehen.

            So ist das korrekt und da ist auch nichts falsches dran. Es ist anfangs erst einmal verwirrend.

            An einem Repository können mehrere Autoren arbeiten. Deren Änderungen können statt auf Github auch lokal zusammengeführt werden. Das kann zum Beispiel mit Diffs erfolgen, es kann aber auch eine eigene Installation eines mit Github vergleichbaren Dienstes vorhanden sein [1], der dafür im eigenen Netzwerk benutzt wird.

            Und obwohl man das alles lokal oder auf eigenen Servern tut, kann man ein Projekt zusätzlich auch noch auf Github publizieren. Deshalb muss es halt möglich sein, auch die Commits von solchen Autoren zu pushen, die auf Github Accounts haben, die im nämlichen Repo nicht pushberechtigt sind oder die auf Github keine Accounts haben.

            Den Push ausführen darf immer nur jemand, der auf dem nämlichen Github-Repo auch die Berechtigung dafür hat. Die Frage der Autorenschaft ist davon völlig unabhängig.

            Damit man nicht immer wieder die Logindaten eingeben muss, kann man …

            Ich hoffe ich habe nichts vergessen und es richtig beschrieben.

            Meine Fresse, was für ein Bohei! 😀

            Davoin mal ganz unabhängig und zur ursprünglichen Fragestellung zurückkehrend, kannst du mit den von mir in meiner ersten Antwort genannten Einstellungen irgendwas anfangen [2]? Mir persönlich fehlt nämlich noch der schlichte Schutz von Branches, ohne damit gleich zwingend Reviews oder Status-Checks zu verbinden. In Gitlab ist das nämlich drin.

            Tschö, Auge

            --
            Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
            Hohle Köpfe von Terry Pratchett

            1. Beispiele für selbsthostbare Github-Alternativen: Gitea, Gitlab, Gogs ↩︎

            2. obwohl sie dir bei diesem konkreten Problem nicht weiterhelfen, sie beziehen sich ja auf die Zusammenarbeit auf Github selbst und nicht auf (von Github aus gesehen) externe Commits ↩︎

            1. Davoin mal ganz unabhängig und zur ursprünglichen Fragestellung zurückkehrend, kannst du mit den von mir in meiner ersten Antwort genannten Einstellungen irgendwas anfangen [2]? Mir persönlich fehlt nämlich noch der schlichte Schutz von Branches, ohne damit gleich zwingend Reviews oder Status-Checks zu verbinden. In Gitlab ist das nämlich drin.

              Ich hatte mir die Einstellungen für den Schutz von Branches angeschaut, aber habe jetzt nur mal ein paar ausprobiert. Erstmal weiß ich jetzt nur, dass es die Möglichkeit gibt Regeln für Branches zu erstellen. Welche ich dann in der Praxis wirklich brauche, werde ich sehen/ausprobieren.

              Ich werde jetzt auch erstmal bei Git bleiben, um damit mehr praktische Erfahrung zu sammeln. Später kann ich die Projekte ja immer noch auf github.com veröffentlichen.

              Wer einen sehr guten Kurs für Git (und Github) sucht, kann ich diesen sehr empfehlen: https://youtu.be/8JJ101D3knE

              Es gibt davon auch einen ausführlicheren 5h Kurs, der aber kostenpflichtig ist. Aber die Kurse von dem sind es wirklich wert.

              Gruß ebody

  2. Lieber ebody,

    was ist der Unterschied zwischen Profil und Branch? Die Antwort darauf könnte Dir helfen, die Lösung zu sehen, die Dir im Moment noch nicht einleuchtet.

    Liebe Grüße

    Felix Riesterer