8

.gitディレクトリを含むフォルダのにあるユーザー定義のワークツリーとgitを連携させるのに苦労しています。

基本的に、セットアップは次のようになります。2つのディレクトリがあります。1つは追跡するファイルを格納する「git-worktree」と呼ばれ、もう1つはリポジトリの.gitフォルダ(別名GIT_DIR)を含む「git-dir」と呼ばれます。

フォルダ「git-dir」にcdして実行し、リポジトリを初期化します。

git --git-dir=./.git --work-tree=/Users/braitsch/Test/git-worktree/ init

これにより、リポジトリが正常に初期化され、「git-dir」フォルダーにいる間に、作業ツリーにあるファイルを追加し、git statusを実行して、それらをコミットできます。涼しい。

ここでのボールのキックは、git stashを実行しようとすると、エラーが発生します。

fatal: /usr/local/git/libexec/git-core/git-stash cannot be used without a working tree.

追跡したいファイルを含む「git-worktree」フォルダーにワークツリーを設定していることがわかっているので(または少なくとも私は思うので)、これはBSです。

git config --local -lは私に次のことを示しています:

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.worktree=/Users/braitsch/Test/git-worktree
core.ignorecase=true

.gitフォルダーをローカル構成ファイルに手動で追加して、それが役立つかどうかを確認しましたが、役に立ちませんでした。

core.gitdir=/Users/braitsch/Test/git-dir/.git

これがキッカーです。git-dirの親であるディレクトリにワークツリーを設定すると、 Git stashが機能します。たとえば、ホームディレクトリを指定するようにワークツリーを設定した場合です。

core.worktree=/Users/braitsch/

だから私があなたたちに持っている質問は、私のワークツリーがルートに戻るgit-dirの親パスに沿ってだけでなく、ファイルシステム上のどこにでも存在できるようにするためにgitに指示するためにどのような設定が欠けているのですか?確かに、git-dirとwork-treeを好きな場所に配置し、gitに指示した後、すべてが機能するようにする方法が必要ですか?読んでくれてありがとう。任意の洞察をいただければ幸いです。

4

1 に答える 1

9
git --git-dir=<your path> --work-tree=<work tree path> stash

動作するはずです。絶対パスを試しましたか?

アップデート:

バグのようです。--git-dirオプションの拡張機能は最近追加されたばかりであり、gitstashなどの一部のコマンドにはまだ新しい実装がありません。

git-stashはbashスクリプトです。あなたはそれをハックして、必要な作業ディレクトリチェックを削除してから、作業フォルダにcdすることができます。

于 2011-06-17T23:59:55.443 に答える