Kann ich ein verschachteltes Git-Repo in einem von Git ignorierten Ordner haben?

Lesezeit: 3 Minuten

Ich habe ein Git-Repo mit folgenden Ordnern:

 _includes/
 _layouts/
 _plugins/
 _posts/
 _site/

_site-Ordner wird in der hinzugefügt .gitignore Datei.

Kann ich jetzt ein Git-Repo im _site-Ordner mit einem anderen Remote-Repo für Push und Pull haben? Wird es Konflikte geben?

Ich habe Git-Submodule studiert, aber ich denke, es wäre in meinem Fall ein Overkill, wenn die oben genannte Methode funktionieren könnte.

  • Ich wäre überrascht, wenn es funktioniert, und selbst wenn es funktioniert, können Sie Überraschungen erleben, da es nicht dafür vorgesehen/konstruiert ist, zu funktionieren. Git-Submodule sind nicht übertrieben, nehmen Sie sich einfach etwas Zeit, um die Grundlagen zu verstehen 🙂

    – KarlB

    18. April 2012 um 8:16 Uhr

  • Wenn Sie sich auch von Submodulen fernhalten, verlieren Sie die Möglichkeit, dem Hauptrepo mitzuteilen, welche Revision _site ist bei

    – KarlB

    18. April 2012 um 8:18 Uhr

  • “Sie verlieren die Fähigkeit, dem Hauptrepo mitzuteilen, in welcher Revision _site ist” Aber _site ist in .gitignore also main repo weiß schon nichts über die _site Mappe.

    – Andrew-Dufresne

    18. April 2012 um 8:45 Uhr


  • Klar, aber das ist schon nicht optimal 🙂

    – KarlB

    18. April 2012 um 8:48 Uhr

  • Für das, was es wert ist, gibt es mindestens einen (seltsamen, aber gültigen) Anwendungsfall dafür: Wenn Sie die Dotfiles Ihres Home-Verzeichnisses in Git verfolgen möchten. Auf diese Weise pflege und repliziere ich meine Konfiguration auf verschiedenen Computern, ohne daran denken zu müssen, die Dotfiles jedes Mal, wenn ich sie bearbeite, in das/aus dem Repo zu verschieben. Mein Zuhause dir ist selbst ein Git-Reposodass ich einfach pushen/ziehen kann und alle meine Maschinen die neueste Konfiguration behalten. ALLE Dateien, die keine Anwendungskonfigurationsdateien sind, werden in meine Gitignores eingefügt, einschließlich aller meiner Entwicklungs-Repos.

    – Neil Traft

    18. Oktober 2021 um 16:38 Uhr

Ich denke, es sollte funktionieren. Für das Haupt-Repo, _site Ordner existiert nicht. Es spielt also keine Rolle, was Sie drin haben. Wenn du cd hinein _site Sie befinden sich auf diesem unabhängigen Repo.

  • Beachten Sie jedoch, dass dies zu einigen Problemen führen kann. Eines der Probleme ist das git clean -dfx im äußeren Repo entfernt das verschachtelte Repo. Daher muss der Benutzer vorsichtig sein. Vielleicht wäre es besser, den Ordner zu symbolisieren. Bei Laufen git cleanwird der Symlink entfernt und das verschachtelte Repo bleibt intakt.

    – Yamaneko

    17. April 2014 um 4:42 Uhr


Ja – ich habe es gerade probiert. Hier ist meine Befehlszeilensitzung:

$ mkdir temp
$ cd temp
$ git init 
Initialized empty Git repository in /Users/mpdaugherty/temp/.git/
$ git add .
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
$ echo 'ignore' >> .gitignore
$ git add .
$ git commit -a -m 'first commit'
[master (root-commit) 17d293c] first commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
$ mkdir ignore
$ git status
# On branch master
nothing to commit (working directory clean)
$ cd ignore
$ git init .
Initialized empty Git repository in /Users/mpdaugherty/temp/ignore/.git/
$ echo 'Some text' > somefile.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   somefile.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -a -m 'initial commit'
[master (root-commit) 107f980] initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 somefile.txt
$ cd ..
$ git status
# On branch master
nothing to commit (working directory clean)

1245560cookie-checkKann ich ein verschachteltes Git-Repo in einem von Git ignorierten Ordner haben?

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

Privacy policy