Daher verwende ich Git hauptsächlich für Entwicklungszwecke, habe jedoch festgestellt, dass ich damit Versionen der Einstellungsdateien speichern kann, die ich in meiner Ubuntu-Installation habe.
Mein vorgeschlagener Aufbau ist:
git init
ein Repo bei/
Add a
.gitignore
an ,/
dass ignoriert alle Dateien außer spezifischen Einstellungen , die ich verfolgen möchten.Zum Beispiel
.gitignore
könnte das ( source ) enthalten:## Ignore everything... * ## Except... !/etc/default/tlp !/etc/crontab
Wenn ich diese Einstellungen auf niedriger Ebene ändere, kann ich sie nachverfolgen.
Kann bei diesem Setup etwas schief gehen? Muss der Kernel immer /
nur bestimmte Ordner haben? Wird es die Funktionsweise von Anwendungen beeinträchtigen?
~
Einstellungsdateien Ihres Home-Verzeichnisses anstelle von/
Dateien berücksichtigen/etc/crontab
auf meinem persönlichen Laptop gehören definitiv mir, aber ich verstehe, was du meinst.etckeeper
und erstellen Sie Backups.Antworten:
Die Antwort auf beide Fragen lautet Nein. Sie können ein beliebiges Verzeichnis im erstellen
/
. Das einzige, was passieren könnte, sind einige Berechtigungsprobleme mit einigen räumlichen Pfaden, denke ich.Es ist jedoch besser, das
.git
Verzeichnis an einem anderen Ort zu speichern.Lesen Sie hier .
quelle
Eigentlich möchten Sie wahrscheinlich Konfigurationsdateien zur Versionskontrolle in
/etc/
(die Einträge des Stammverzeichnisses/
, insbesondere Verzeichnisse wieproc
oderusr
oderbin
in, interessieren Sie nicht/
), so dass Sie das Paket möglicherweise installieren möchtenetckeeper
Sie können auch einige ausgewählte Unterverzeichnisse (wie
/usr/share/applications/
die von Ihnen erwähnten) versionieren .Verwirren Sie sich jedoch nicht mit dem Ubuntu- Paketverwaltungssystem . Vielleicht sollten Sie meistens die aktuelle Liste der installierten Pakete sichern.
quelle
/usr/share/applications
wenn ich gelegentlich mit ihnen herumspiele.Ein Git-Repo in / zu haben, funktioniert einwandfrei, mit der Ausnahme, dass es schwierig ist, es zu bemerken, wenn Sie ein Git-Repo mit einem niedrigeren Level haben, da es für alle Probleme eine Antwort gibt.
Hinweis: Es ist weniger arbeitsaufwendig und wahrscheinlich nützlicher, 'debsums' zu verwenden.
So können Sie (die meisten) Änderungen in Binärdateien oder Konfigurationsdateien schnell erkennen.
Als Beispiel für die installierten Pakete sind hier diejenigen aufgeführt, die sich von den Upstream-Paketen unterscheiden.
Und Sie können eine Liste der geänderten Konfigurationsdateien erhalten mit:
Beachten Sie, dass der Chrom-Browser nicht ordnungsgemäß verpackt ist und eine Datei in der Liste der nicht vorhandenen Paketdateien aufgeführt ist.
Dies verwendet die dpkg-Daten und vermeidet ein großes /.git-Verzeichnis und einen Workflow.
quelle
/home/$USER
wird das.git
in/
für jeden Git-Befehl antworten, der für das Repo in/home$USER
und nicht für das [.gir
file] in/home/$USER
....git
Verzeichnis weiter oben im Baum zuzugreifen , müssen Sie nurcd
darauf zugreifen oder auf ein Unterverzeichnis davon, das keinen.git
Ordner enthält (ein normales Verzeichnis)Also habe ich die anderen Antworten untersucht und ein Verfahren gefunden, das für mich funktioniert:
Machen Sie eine
.gitignore
an/
. Das war viel komplizierter, als ich dachte, weil Git mit Whitelisting-Dateien in Unterordnern umgeht. Ich habe diesen und diesen Link benutzt, um mir zu helfen.Gehen Sie zu
/
und führen Sie es ausgit init .
Bisher konnte ich den.git/
Ordner nicht über den von @Ravexina erwähnten Link in einem anderen Verzeichnis speichern .Führen Sie
git add .
und ausgit status
. Sie sollten eine Liste aller Einstellungsdateien erhalten, die Git verfolgt.Festschreiben mit
git commit -m "Initial settings files"
.Sie können Änderungen mit
git log -p -- path/to/file
oder verfolgengitk path/to/file
. Mehr Diskussion dazu hier .quelle
Wenn Sie vertrauliche Dinge (wie
/etc/shadow
) im Git-Repo speichern möchten, sollten Sie sicherstellen, dass diese nicht von allen Benutzern gelesen werden können, da die Objekte standardmäßig die Berechtigung haben444
und Verzeichnisse die Berechtigung haben0755
. Sie können die Erlaubnis von.git
zu ändern700
oder es in setzen/root
Ein weiteres Problem ist, dass git keine Dateiberechtigungen wie das Dateisystem und keine erweiterten Attribute speichert. Bei Dateien speichert git nur, ob sie ausführbar sind. Wenn Sie also eine gelöschte Datei wiederherstellen möchten, sind der Eigentümer und die Gruppe root (wenn Sie sie als root ausführen), und die Berechtigung lautet
644
oder755
. Dies kann bei Konfigurationsdateien von Diensten problematisch sein, deren Eigentümer nicht root ist.quelle