次の方法で、手動で定義されたワークツリーを使用して git リポジトリをセットアップしようとしています。
cd /Users/braitsch/repos/project1
git --git-dir=. --work-tree=/Users/braitsch/projects/project1 init
上記を実行した後、「/Users/braitsch/projects/project1」にあるファイルを追加できます
: git add somefile または git add 。
「git branch」への呼び出しと同様に、コミットは正常に機能します
ただし、git stash list
次のエラーがスローされます。
致命的: /usr/local/Cellar/git/1.7.4.4/libexec/git-core/git-stash は作業ツリーなしでは使用できません。
ユーザー定義の作業ツリーではスタッシングはサポートされていませんか?
git config --local core.worktree
echoes out : /Users/braitsch/projects/project1
どんな考えでも大歓迎です!
- - - - アップデート - - - -
以下で @jleedev が指摘したように、ワークツリーの外部から「git stash」を呼び出そうとするとバグがあるようです。ただし、私の回避策は、ワークツリーに cd してから、最初に gitdir へのパスの前に stash を呼び出すことです。不便ですが、stash コマンドでは次のように動作します。
git --git-dir="projects/proj1/.git" stash list
この問題は、add、commit、branch などの他のストック コマンドを悩ませているようには見えません。私が知る限り、「stash」だけです。
ワークツリー内にネストされた .git フォルダーを持つデフォルトの構造から脱却しようとしている場合は、次の手順が役立つ場合があります。
- git リポジトリを保存するディレクトリを作成します
- 追跡するファイルを保持するディレクトリを作成します(これらは両方ともファイルシステムのどこにでもかまいません)
cd を git リポジトリ フォルダーに移動し、次を実行します。
git --git-dir=. --work-tree="path-to-your-project-folder" init
これにより、新しいリポジトリが初期化され、外部のワークツリー フォルダーにリンクされます。
標準の add、delete、branch、commit コマンドを実行するには、cd で git リポジトリに移動し、通常どおりコマンドを実行します。ただし、stash を実行するには、必ずワークツリーに cd してから、コマンドの前に gitdir へのパスを付けて前述したように stash を実行してください。