Whymarrh's comment:これを行うための組み込みコマンドはありません。
はそのようなビルトイン、同様に存在しない正当な理由があります。上流のリモートトラッキングブランチが整理されているからといって、必ず自分のの作業を取り除く準備ができているわけではありません。あなたは一つの良いがBranch1
にコミット作り、それをgit push
する準備ができていたが、先週中断してしまった
...--o--o--o <-- origin/Branch1
\
o <-- Branch1
:あなたの例では、git fetch --prune
はorigin/Branch1
を削除し、おそらく前に、もしかしたら、コミットグラフ画像は、このように見えました。今origin/Branch1
がなくなっていることを、おそらくあなたは良いどこかにコミットコピーしたいと思います。origin/Branch1
がなくなっている。しかし今では、グラフにキンクを維持する理由はありません、とGitは見ることができるすべてはこれです:
...--o--o--o--o <-- Branch1
それはあなたのBranch1
が上流に構成したことを知っているが、それがコミットしている知っていません上流に設定されたものは、存在していた時点を指していました。あなたは、このような枝を削除したいかなり一定している場合、あなたは短いスクリプトからそれを行うことができますそれにもかかわらず
、:
#! /bin/sh
#
# rm-if-gone: remove branches that have a configured upstream
# where the configured upstream no longer exists. Run with
# -f to make it work, otherwise it just prints what it would
# remove.
force=false
case "$1" in
-f) force=true;;
esac
for branch in $(git for-each-ref --format='%(refname:short)' refs/heads); do
# find configured upstream, if any
remote=$(git config --get branch.$branch.remote) || continue
# if tracking local branch, skip
if [ "$remote" = . ]; then continue; fi
# if the upstream commit resolves, skip
ucommit=$(git rev-parse "${branch}@{u}" 2>/dev/null) && continue
# upstream is invalid - remove local branch, or print removal
$force && git branch -D $branch || echo "git branch -D $branch"
done
(上記はテストされていない。また、それはない、あなたができるので、 現在のブランチを削除してください。削除しないブランチにいることを確認する必要があります)。
私は信じられません。手動でそれらを削除する必要があります。 – Whymarrh