次の 2 つの完全なリポジトリがあります。
# compelte foo bar
mkdir complete-foo && cd complete-foo
git init
mkdir foo
echo bar > bar
echo bar > foo/bar
git add bar foo
git commit -a -m "complete foo bar"
cd ..
# deployed foo baz
mkdir deployed-foo && cd deployed-foo
git init
mkdir foo
echo baz > topbaz
echo bar > foo/baz
git add topbaz foo
git commit -a -m "deployed foo baz"
cd ..
そして、それらを追跡するスパース リポジトリ:
mkdir sparse-bar && cd sparse-bar
git init
git config core.sparsecheckout true
echo foo >> .git/info/sparse-checkout
git remote add -f complete ../complete-foo
git fetch complete
git checkout -b complete complete/master
git remote add -f deployed ../deployed-foo
git fetch deployed
git checkout -b deployed complete/master
ここまでは順調ですね。
foo/フォルダー内のファイルのみを diff/merge したいのですが、期待どおりに動作しません。
たとえば、もしそうなら、
echo boo >> foo/bar
git diff deployed..complete
違いがわかりません。
また、foo/ とその子のみに制限された違いのみをマージする方法も学びたいと思います。違いを見たくない
PS
「read-tree --prefix」アプローチを試して、同様のことを達成するのに何時間も費やしてください。不成功。