git ignoriert nicht 2 speziell benannte Dateien

Lesezeit: 3 Minuten

Ich möchte automatisch 2 Dateien vom Commit ausschließen, die Teil des Git-Repositorys sind, aber einige Änderungen aufweisen, die nicht Teil des Github-Repos sein sollten, da sie einige Änderungen aufweisen, die nur für mein lokales System von Bedeutung sind und nicht für das andere Entwickler.

Ich habe sie hinzugefügt .git/info/exclude in der Hoffnung, dass Git versteht, dass er keine Änderungen an ihnen vornehmen sollte:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
a.conf
b.conf
# *~

aber git status listet sie immer noch als zum Commit bereitgestellt auf:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   build/conf/a.conf
#   modified:   build/conf/b.conf
#

Ich möchte sie nicht regelmäßig bei jedem Commit aus der Staging-Umgebung entfernen (einmal könnte ich es einfach vergessen), wie kann ich das tun?

  • Warum nicht .gitignore?

    – Außenseiter

    4. Juni 2012 um 10:25 Uhr

  • Sie können Dateien, die Sie verfolgen, nicht ignorieren. Sie müssen wahrscheinlich einen anderen Weg finden, lokale systemspezifische Informationen zu verwalten, wie z. B. “Vorlagendateien”, aus denen Sie Konfigurationsdateien generieren oder manuell bearbeiten.

    – CB Bailey

    4. Juni 2012 um 10:31 Uhr

  • @maverik: wenn exclude funktioniert nicht, .gitignore wird es auch nicht. Der Anwendungsfall für exclude ist, dass diese Informationen lokal während .gitignore konnten eingecheckt und geteilt werden. Nehmen exclude für Ihre lokalen Sachen, wenn Sie die nicht in die Luft jagen wollen .gitignore. Stellen Sie sich ein großes Projekt vor, in das jeder Entwickler seine Ausschlüsse einträgt .gitignore. Es wäre nicht mehr zu bewältigen…

    – eckes

    4. Juni 2012 um 10:48 Uhr

Benutzer-Avatar
Ecken

Was Sie möchten, ist, Änderungen an nachverfolgten Dateien zu ignorieren. Dies kann (wie Charles Bailey sagt) nicht richtig erreicht werden, auch nicht mit .gitignore auch nicht mit .git/info/exclude.

Sie müssen verwenden git update-index:

git update-index --assume-unchanged build/conf/a.conf
git update-index --assume-unchanged build/conf/b.conf

erreichen, was Sie wollen: Die Dateien werden immer unverändert übernommen.

Wenn Sie Änderungen in diesen Dateien erneut verfolgen möchten, verwenden Sie --no-assume-unchanged.

Wenn Sie schließlich wissen möchten, welche Dateien sich derzeit in der --assume-unchanged Modus, fragen Sie git danach

git ls-files -v | grep -e "^[hsmrck]"

  • Funktioniert super für mich!

    – Gustin

    17. Januar 2017 um 15:42 Uhr

  • ist diese Lösung an einen Zweig gebunden? Lassen Sie uns Datei 1 und Datei 2 in Zweig 1 als “unverändert annehmen” markieren. Dann Kasse zu Filiale2. Sind diese Dateien auch als “unverändert annehmen” gekennzeichnet?

    – Nepapu

    23. Februar 2018 um 9:03 Uhr

  • @Leo Die Datei kann nicht erstellt werden, weil die Datei noch nicht verfolgt wird. Sie können einfach zu .git/info/exclude gehen und die Pfade hinzufügen, die Sie ausschließen möchten.

    – August Franziskus

    26. September 2018 um 21:05 Uhr


  • Anscheinend Betreuer von git stimme dieser Antwort nicht zu: git-update-index –assume-unchanged war nie dazu gedacht, Änderungen an nachverfolgten Dateien zu ignorieren. Siehe auch stackoverflow.com/a/23305143/2705757 .

    – AXO

    26. März 2019 um 5:56 Uhr

  • @eckes Wie auch immer, damit dies für alle Zweige funktioniert? Wenn ich den Befehl verwende, nehme ich Änderungen vor, kann ich keine Zweige wechseln und gibt mir einen Fehler, um sie festzuschreiben oder zu verstauen

    – Säbel

    31. Juli 2019 um 0:50 Uhr

1316100cookie-checkgit ignoriert nicht 2 speziell benannte Dateien

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

Privacy policy