タイトルが言うこと。
すべてを削除して最初から複製することなく、ローカルにのみ存在するいくつかのブランチとタグを削除するなど、リモートリポジトリと一致するようにすべてのローカルブランチをリセットしたいと考えています。私が見つけたのは、特定のブランチをリセットする方法に関する指示だけで、リポジトリ全体ではありません。
TortoiseGit Shell 拡張機能から実行できればさらに良いでしょう。しかし、コマンドラインでも問題ありません。
タイトルが言うこと。
すべてを削除して最初から複製することなく、ローカルにのみ存在するいくつかのブランチとタグを削除するなど、リモートリポジトリと一致するようにすべてのローカルブランチをリセットしたいと考えています。私が見つけたのは、特定のブランチをリセットする方法に関する指示だけで、リポジトリ全体ではありません。
TortoiseGit Shell 拡張機能から実行できればさらに良いでしょう。しかし、コマンドラインでも問題ありません。
次のコマンドで実行できます。
git checkout --orphan @
git fetch <Remote> refs/*:refs/* --refmap= --prune --force
使用するリモート リポジトリはどこに<Remote>
ありますか。fetch
すべてのリモート参照 ( refs/*:refs/*
)--prune
と--force
フラグを使用して、ローカル参照を削除して強制的に更新するだけです。
次の行は、構成された上流ブランチを持つすべてのローカル ブランチを上流ブランチの状態にリセットします。
git checkout @{0} && git for-each-ref refs/heads --format '%(refname:strip=2)' | xargs -ri sh -c 'git rev-parse {}@{u} >/dev/null 2>&1 && git branch -f {} $(git rev-parse {}@{u})'
HEAD
現在チェックアウトされているブランチをリセットできないため、最初のコマンドが原因でデタッチされてしまうため、これを行った後に作業ディレクトリに入れたいブランチをチェックアウトします。