開発マシンとリモート テスト サーバーがあります。
開発マシンはファイル A + B + C をコミットし、既にファイル A と C を SFTP 経由で (私のエディターで) テスト サーバーに送信しています。A と C は最後のコミット以降に変更されていますが、アップロード以降に変更されている場合とされていない場合があります。
テスト サーバーには、ステージングまたはコミットしたくないステージングされていない変更 (ファイル A + Y) と追跡されていない変更 (ファイル C + Z) の両方があります。
私は通常、手動でgit checkout A
テストrm Y
サーバー上で実行し (最後のコミット以降のすべての SFTP 変更を元に戻します)、コミットをプルします。次に、開発マシンに同じ A + B ファイルがあります。
pull の前に checkout/rm するファイルがさらに存在する可能性がある実際のシナリオで、テスト サーバーで checkout/rm に正確なファイルを指定する必要がないコマンドでこれを行うにはどうすればよいでしょうか?
このワークフローには、編集中のファイルでテスト サーバーを最新の状態に保ちながら、git 履歴をクリーンに保つという利点があります。
--- 解決の始まり ---
git fetch
cd `git rev-parse --show-toplevel`
git diff --name-only origin/mybranch..origin/mybranch~1|cat
// for each x in last output: rm x; git co x
git stash
git pull --rebase
git stash pop