git subtree pull コマンドは、指定した subtree ルートのフォルダにリモートの変更をマージする動作ですが、削除されたファイルがローカルの subtree フォルダ内から自動的に削除されるかというと、これは仕様上そうならないことが
多いです。ᜊ•ᴗ•ᜊゎꩢゎꩢ
つまり、例えば takaboy リポジトリ側で taka.txt を削除しコミット&プッシュした場合でも、ローカル yahoo リポジトリで
git subtree pull --prefix=takaboy takaboy_origin takaboy_20251208
を実行しても、takaboy フォルダ内の taka.txt は削除されずに残る場合があります。これは git subtree pull が実質的に「リモートの subtree 履歴をマージする」操作であって、ファイル単位での完全なローカル同期(特に削除の反映)を保証していないためです。
削除まで反映するには、git subtree pull 後に手動やスクリプトで「リモートとローカルの subtree フォルダのdiffで削除されたファイルを git rm で削除する」という対応を行うことが現実的です。
また、現場でよく使われる方策として、単に subtree の pull ではなく、リモートの takaboy ブランチをフェッチしたのちに下記のようにリモートブランチの内容ごとローカルの subtree にチェックアウトし、削除も含めた完全同期を行う方法があります。
git fetch takaboy_origin
git checkout takaboy_origin/takaboy_20251208 -- takaboy
ただしこの方法はローカルで takaboy フォルダの直接編集を禁止している環境では問題なくても、コミット履歴の整合性に注意が必要です。
結論として、git subtree pull だけでは削除ファイルの反映は保証されないため、削除も含めて同期させたいなら手動操作や別コマンドの併用が必要です。
参考に、似た質問では git pull や subtree pull は削除ファイルを消さず、削除部分は明示的に処理するのが普通とされています。