Ist es möglich, das Nachverfolgen lokaler Änderungen an einer Datei zu stoppen, die heruntergezogen werden soll, wenn sie im Repository geändert wird?

Lesezeit: 3 Minuten

Ist es moglich das Nachverfolgen lokaler Anderungen an einer Datei
Mark A. Donohoe

Wir haben eine Konfigurationsdatei im Repo, zu der alle Benutzer basierend auf ihrer Funktion beitragen. Für meine lokalen Tests muss ich zwei Werte in dieser Konfigurationsdatei manuell ändern, aber ich möchte nie, dass meine Änderungen zurück auf den Server übertragen werden.

Ich möchte jedoch Updates in die Datei ziehen, wenn sich eine neuere Version im Repository befindet, auch wenn dies bedeutet, dass meine lokalen Änderungen überschrieben werden. Das ist in Ordnung, ich kann sie einfach wieder aus einem Vorrat machen, den ich speziell dafür erstellt habe.

Was ich mich frage ist, ob ich Git sagen kann “Hey… das werde ich” noch nie meine lokalen Änderungen auf den Server zurückschieben, also mir nicht als geändert anzeigen, aber wenn Sie habe neue Änderungen für mich, lass mich sie haben, wenn ich ziehe!”

Hier ist ein Beispiel für das, was ich suche.

Server: VersionA
Local:  [Nothing]

(I do a Git Pull)

Server: VersionA
Local:  VersionA

(I make local changes)

Server: VersionA
Local:  VersionA (Modified)

(What I want...)

Server: VersionA
Local:  VersionA (Modified, but ignored locally by Git)

(Someone checks in an update to the file)    

Server: VersionB
Local:  VersionA (Modified, but local changes ignored by Git)

(I do a git Pull)

Server: VersionB
Local:  VersionB (This overwrites my local, modified VersionA)

(I then manually update VersionB with my stashed changes)

Server: VersionB
Local:  VersionB (modified, but local changes ignored by Git)

Der .gitignore Datei trifft hier nicht zu, da dadurch das Hinzufügen neuer Dateien verhindert wird, aber auch diese Datei hat schon hinzugefügt worden. Ich möchte nur, dass meine lokalen Änderungen immer ignoriert werden, als ob sie nicht vorhanden wären. Mich interessiert nur, wenn sich die Datei auf dem Server geändert hat.

Kann Git dafür konfiguriert werden?

  • Ich denke, Sie sollten den Workflow ändern und mit einer Kopie dieser Datei arbeiten. In einem Repository speichert Ihr Team nur ein Beispiel der Datei, und wenn es geändert wird, können Sie Ihre Arbeits- und Beispielkopien zusammenführen.

    – mymedia

    10. August ’17 um 18:52

Der .gitignore Datei trifft hier nicht zu, da dadurch das Hinzufügen neuer Dateien verhindert wird, aber auch diese Datei hat schon hinzugefügt worden.
Ich möchte nur, dass meine lokalen Änderungen immer ignoriert werden.

Ein anderer Ansatz wäre, Ihre Änderungen vorzunehmen … in a Privatgelände Datei, die nicht verfolgt und ignoriert wird.

Das heißt, alle gemeinsamen Beiträge werden in a . erstellt Schablone Datei., früher generieren die eigentliche Datei (als private Datei ohne Versionsnummer, hinzugefügt zu Ihrem .gitignore).

Diese Generation wäre automatisch an git checkout.

Benennen Sie zunächst Ihre vorhandene Datei um:

git mv aConfigFile aConfigFile.tpl
git commit -m "record template config file"

Dann füge hinzu aConfigFile zu einem .gitignore Datei A git status wird nicht mehr zum Hinzufügen/Ändern angezeigt.

Erkläre jetzt einen Fleck Inhaltsfiltertreiber wodurch diese Datei automatisch neu generiert wird (ignoriert, da in .gitignore)

https://git-scm.com/book/de/v2/images/smudge.png
(Bild von “Git anpassen – Git-Attribute“, von “Pro Git-Buch“)

smudge Skript (das Sie versionieren können): YourScript

copy aConfigFile.tpl aConfigFile

Deklarieren Sie den Inhaltsfiltertreiber in einem versionierten .gitattributes:

echo 'aConfigFile.tpl config' >> .gitattributes

Dieser verwischte ‘config’-Inhaltsfiltertreiber muss lokal von jedem Benutzer aktiviert werden, der dieses Repository klont.

cd /path/to/repo
git config filter.config.smudge YourScript

Dieser letzte Schritt ist der einzige, den jeder Benutzer ausführen muss, um von der tatsächlichen Konfigurationsdatei zu profitieren, die automatisch auf jedem generiert wird git checkout.

Alle Änderungen an der generierten Datei bleiben lokal.

.

301350cookie-checkIst es möglich, das Nachverfolgen lokaler Änderungen an einer Datei zu stoppen, die heruntergezogen werden soll, wenn sie im Repository geändert wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy