ユーザーの介入なしで Git チェックアウトの成功を保証するスクリプトを書きたいと思います。ユーザーの介入なしでは解決できないものをダンプしても構いません。たとえば、コミットされていない変更などです。明示的に無視されたファイルを保持したいのですが (これらは「バージョン管理下」にあると考えています)。
Git でステージングされていない変更をどのように破棄しますか?への豊富な回答に基づいてスクリプトを作成しました。時間の経過とともに発生したエラーを修正します( git --reset hardおよびIgnoring "Your local changes to the following files would be overwrite by merge" on pull の後に残ったステージングされていない変更と似ていますが、まったく同じではありません)。
私は今、断片的なスクリプトに冗長性が含まれているか、短縮されている可能性があることを懸念しています. 次の呼び出しのいずれかが冗長ですか?
cd /SOME/FOLDER
git clean -df & git checkout .
git stash
git stash clear
git checkout SOME-BRANCH # or git checkout -B SOME-REMOTE SOME-BRANCH [1]
# possibly followed by a manual call to: git pull --rebase SOME-REMOTE
[1] これらの呼び出しはgit checkout -f
およびgit checkout -fB
でしょうか?