it-swarm.com.de

Git Arbeitsverzeichnis ändern

Ich möchte mit Git Repository arbeiten, aber der Arbeitsbaum sollte entfernt sein. Zum Beispiel: Wenn ich mein Projekt in ~/project und project.git in ~/git/project.git gespeichert habe.

Was ich über den Config-Baum geändert habe:

worktree=/Users/myuser/project

Und ich bin in der Lage, diff festzuschreiben und anzuzeigen, aber als ich git stash versucht habe, habe ich eine Fehlermeldung erhalten:

fatal:/usr/libexec/git-core/git-stash kann nicht ohne einen Baum verwendet werden.

Wie wird .git-Verzeichnis weit vom Arbeitsbaum entfernt gespeichert? Und warum erhalte ich diesen Fehler?

git config --get core.worktree gibt das korrekte Arbeitsverzeichnis zurück.

13
ValeriiVasin

Das Folgende scheint zu funktionieren, passen Sie sich Ihren Bedürfnissen an:

mkdir git
mkdir work
git --git-dir git/test --work-tree work/test init
mkdir work/test
echo -n foo > work/test/foo.txt
git --git-dir git/test status
git --git-dir git/test add foo.txt
git --git-dir git/test commit -m 'commit 1'

BEARBEITEN: Beachten Sie, dass Sie nach der Initialisierung des Repos nicht --work-tree angeben müssen, da dieser Wert in git/test/config gespeichert ist.

Sie können auch in Arbeit/Test einsteigen und von dort aus Commit ausführen:

cd work/test
echo -n bar > bar.txt
git --git-dir ../../git/test status
git --git-dir ../../git/test add .
git --git-dir ../../git/test commit -m 'commit 2'

Verwenden Sie dann einen absoluten Pfad für --git-dir oder setzen Sie GIT_DIR.

13
devconsole

Korrektur für die Verwendung von --git-dir-Flag:

benutzen:

git --git-dir=git/test/.git ...

anstatt:

git --git-dir git/test ...
5
ikandars

Ich sehe unterschiedliche 4 Optionen, je nachdem wo Sie Ihren Ausgangspunkt haben.

  1. Sie haben ein Remote-Repository (z. B. auf GitHub), an dem Sie in einem Remote-Dateisystem (z. B. Samba) arbeiten möchten. In diesem Fall können Sie einfach so klonen:

    git clone --separate-git-dir=/your/local/repository/dir https://your_repo_url /your/remote/workspace/dir
    

    / your/local/repository/dir und/your/remote/workspace/dir sollten noch nicht existieren und werden von Git korrekt erstellt. Anschließend können Sie wie gewohnt innerhalb des Remote-Dateisystems arbeiten, jedoch ohne die typischen Leistungsprobleme, die auf Remote-Dateisystemen auftreten.

  2. Es gibt kein Remote-Repository, und Sie möchten ein neues Repository mit einem Arbeitsbaum im Remote-Dateisystem erstellen. Beachten Sie dazu die Antwort von devconsole und Radon8472 .
  3. Sie haben bereits ein Repository und einen Arbeitsbereich in einem Remote-Dateisystem. Verschieben Sie in diesem Fall einfach das Verzeichnis .git in einen lokalen Pfad und erstellen Sie in Ihrem Arbeitsbaum eine .git-Datei mit folgendem Inhalt:

    gitdir: /path/where/you/moved/your/.git
    
  4. Sie haben bereits ein Arbeitsverzeichnis in Ihrem Remote-Dateisystem, das noch nicht mit Ihrem Remote-Git-Repository verbunden ist. In diesem Fall einfach ausführen

    git clone -b https://your_repo_url
    

    irgendwo in Ihrem lokalen Dateisystem und erstellen Sie dann eine .git-Datei in Ihrem Arbeitsverzeichnis, wie in Option 3 oder in der Antwort von Radon8472 beschrieben.

0
Patrick Fink

Sie können ein .git-dir außerhalb Ihres Projektordners verwenden, ohne den Pfad zu jedem Befehl zu schreiben.

Erstellen Sie einfach eine Datei mit dem Namen .git in Ihrem Arbeitsverzeichnis und fügen Sie Inhalte wie folgt hinzu:

gitdir: /path/to/your/dir/storage/dir/project.git

Als Pfad können Sie absoluten Pfad und Pfad relativ zum Arbeitsverzeichnis verwenden.

0
Radon8472