Ich arbeite in einer Teamumgebung und es gibt bereits eine .gitignore
Datei.
Ich möchte der .gitignore
Datei weitere Elemente hinzufügen , aber ich möchte diese Datei auch nicht einchecken. Ist es möglich, benutzerdefinierte Ignorierdateien festzulegen, die nur für mich gelten?
Außerdem möchte ich jemandem schreibgeschützten Zugriff auf ein privates Git-Repository auf unserem Server gewähren. Wenn ich seinen SSH-Schlüssel zu unserem Server hinzufüge, erhält er wie alle anderen vollen Zugriff. Wie kann ich es auf schreibgeschützt beschränken, keine Commits erlaubt?
Antworten:
.git/info/exclude
. Siehegitignore(5)
.git-daemon
einen Webserver , Gitosis oder Gitolite.quelle
.git/info/exclude
das Stammverzeichnis des Projekts ein .core.excludesfile
können Sie eine globale Ausschlussdatei angeben .ln -s .git/info/exclude .personalGitignore
Dann können wir# ln -s .git/info/exclude .personalGitignore \n .personalGitignore
zu .gitignore hinzufügenIch weiß, dass ich etwas spät zum Gespräch komme, aber vielleicht möchten Sie es in Betracht ziehen
In dem Git-Hilfedokument heißt es:
Hervorhebung von mir. Es geht weiter zu sagen
Denken Sie also daran, dass Sie alle vorgelagerten Änderungen an diesen Dateien berücksichtigen müssen.
Für den Fall, dass Sie die Datei erneut verfolgen möchten, müssen Sie sie nur verwenden
Ich hoffe, dies hilft zukünftigen Zuschauern dieses Beitrags.
quelle
Für den SSH-Teil sollten Sie Gitolite (ein Ersatz für Gitosis) in Betracht ziehen.
quelle
Wie Fred Frodo sagte, können Sie Ihre privaten Ausschlussregeln in
.git/info/exclude
das Repository aufnehmen.Wenn Sie dieselben Ausschlussregeln auf alle Repositorys auf Ihrem Computer anwenden möchten, können Sie der
.gitconfig
Datei in Ihrem Benutzerverzeichnis Folgendes hinzufügen .Fügen Sie dann Ihre Ausschlussmuster hinzu
~/.gitexclude
.quelle
Sie könnten an einem Update-Hook interessiert sein , den Junio geschrieben und den Carl verbessert hat. Geben Sie den folgenden Code ein
$GIT_DIR/hooks/update
und vergessen Sie nicht, ihn mit zu aktivierenchmod +x
.Mit diesem Hook geben Sie dann bestimmten Benutzern oder Gruppen die Möglichkeit, Änderungen am Repository vorzunehmen. Jeder andere, der es sehen kann, hat nur Lesezugriff.
Wenn diese Person noch keinen Zugriff auf den Host hat, auf dem sich Ihr Repository befindet, sollte diese Person möglicherweise nur
git-shell
Zugriff und keinen uneingeschränkten Zugriff haben. Erstellen Sie einen speziellen Git-Benutzer und~git/.ssh/authorized_keys
fügen Sie den SSH-Schlüssel des Außenstehenden in der folgenden Form hinzu. Beachten Sie, dass sich der Schlüssel in einer langen Zeile befinden sollte, aber ich habe ihn unten verpackt, um die Präsentation zu erleichtern.Abhängig von Ihrem lokalen Setup müssen Sie möglicherweise den Pfad zu anpassen
git-shell
. Denken Sie daran, dass diesshd
Berechtigungen des.ssh
Verzeichnisses sehr paranoid sind. Deaktivieren Sie daher die Gruppenschreibbits und alle darunter liegenden Dateien.Wenn Sie alle Benutzer durch den Git-Benutzer leiten, müssen Sie in der Lage sein, die Benutzer voneinander zu unterscheiden. Dies ist der Zweck der
myorg_git_user
Umgebungsvariablen. Anstatt sich auf ein Unbedingtes zu verlassenusername=$(id -u -n)
, optimieren Sie Ihren Update-Hook, um ihn zu verwenden:Mit diesem Setup klont Ihr Freund mit schreibgeschütztem Zugriff mit einem Befehl, der dem folgenden ähnelt. Der jeweilige Pfad hängt von Ihrem Setup ab. Um den netten Pfad zum Laufen zu bringen, verschieben Sie entweder Ihr Repository in das Home-Verzeichnis des Git-Benutzers oder erstellen Sie einen Symlink, der darauf verweist.
kann aber keine Updates vornehmen.
Sie sagten, Sie arbeiten in einer Teamumgebung, daher gehe ich davon aus, dass Ihr zentrales Repository mit dieser
--shared
Option erstellt wurde. (Siehecore.sharedRepository
in dergit config
Dokumentation und--shared
in dergit init
Dokumentation .) Stellen Sie sicher, dass der neue Git-Benutzer Mitglied der Systemgruppe ist, die Ihnen allen Zugriff auf Ihr zentrales Repository gewährt.quelle