リポジトリの1つでこれを行う場合:
git subtree pull --prefix=frameworks/AquaticPrime --squash AquaticPrime
私はこれを得る:
Working tree has modifications. Cannot add.
私がこれを行う場合(もちろん同じ場所で):
git status
私はこれを得る:
# On branch master
nothing to commit (working directory clean)
ここで何が起こっているのかよくわかりません。 git statusコマンドは、変更がないことを意味するため、gitサブツリーpullは、サブツリーに関連する別のブランチの変更を参照していると想定していますが、完全には明確ではありません。
誰かが悟りを提供できますか?
私はちょうど同じ問題を抱えていました。 GITソースから、コマンドgit diff-index HEAD
が結果を返すと、git status
が作業ツリーがクリーンであると言っていても、エラーがスローされます。
このエラーを回避するために、私の場合、作業ツリーの現在のブランチを再チェックアウトしましたが、すべて問題ないようです:git checkout <branch>
少し混乱していますが、誰かが理由を説明できれば...
私は今これを回避しました。私の問題は、リポジトリが真新しいように思えました。私はリポジトリに何もコミットしたことがありませんでした。ファイルをリポジトリにコミットすると、このエラーを乗り越えることができました。
ただし、コマンドgit subtree add C:\gitTest\repos\subA -d --prefix subA
を使用すると、新しいエラーが発生しました。
fatal just how do you expect me to merge 0 trees?
少しいじった後、特定のリビジョンを渡す必要があることがわかりました。したがって、このコマンドは成功したようです。
git subtree add C:\gitTest\repos\subA HEAD -d --prefix subA
そして明らかに、-dデバッグフラグは必要ありません。
git reset --hard
修正しました
git reset --help
から
--hardインデックスと作業ツリーをリセットします。作業ツリー内の追跡ファイルへの変更は破棄されます。
私がこの問題を抱えていたのは、次の場合です。
puppet diff
は-正しく-何も表示せず、git diff-index HEAD
削除したばかりの各ファイルを「削除済み」としてリストしました。ただし、コミットしたことはありません(プッシュされたことはありません)。
これはgitのバグだと思います(ここでは2.7.0を使用)...バグかどうかにかかわらず、回避策はany他のブランチ(通常のgit checkout ....
)そしてあなたのところに戻ります。元の質問者でなくても、これが誰かの助けになることを願っています。
Windowsを使用している場合は、PowerShellまたはcmd.exeの代わりにGitBashを使用してみてください。これで私の場合の問題は修正されました。