8

次の方法で、手動で定義されたワークツリーを使用して 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 フォルダーを持つデフォルトの構造から脱却しようとしている場合は、次の手順が役立つ場合があります。

  1. git リポジトリを保存するディレクトリを作成します
  2. 追跡するファイルを保持するディレクトリを作成します(これらは両方ともファイルシステムのどこにでもかまいません)
  3. cd を git リポジトリ フォルダーに移動し、次を実行します。

      git --git-dir=. --work-tree="path-to-your-project-folder" init
    

    これにより、新しいリポジトリが初期化され、外部のワークツリー フォルダーにリンクされます。

標準の add、delete、branch、commit コマンドを実行するには、cd で git リポジトリに移動し、通常どおりコマンドを実行します。ただし、stash を実行するには、必ずワークツリーに cd してから、コマンドの前に gitdir へのパスを付けて前述したように stash を実行してください。

4

3 に答える 3

7

これは、コマンドの動作のバグか、エラー報告のいずれかです。作業ツリーを必要とし、スクリプトとして実装されるコマンド1は、次のコマンドでその存在を確認します。

git rev-parse --is-inside-work-tree

エラーメッセージが意味するものとは反対に、実際に作業ツリーにいない場合、これは失敗します。一方、C で実装されているコマンドは、setup_work_tree自動的chdirに作業ツリーに s を呼び出す を呼び出します。require_work_treeの関数をこれに合わせて安全に変更できるかどうかはgit-sh-setupわかりません。

1.git-am.sh git-bisect.sh git-mergetool.sh git-pull.sh git-rebase--interactive.sh git-rebase.sh git-stash.sh git-submodule.sh

于 2011-05-02T23:23:07.853 に答える
0

編集:

適切なフォルダーを指すように GIT_WORK_TREE 環境変数を設定してみてください。


元の答え:

少し変わったコマンドでした。代わりにこれを試してください。それははるかに簡単です:

mkdir yourRepo
cd yourRepo
git init
.. edit some files
git add .
git commit -m "First commit"
于 2011-05-02T23:03:57.953 に答える