[英]git: deleting a descendant branch
假定以下提交結構:
master: A-B-C-D-E----------------
\ \
branch a: F-G-H branch d: N-O
\
branch b: I-J
\
branch c: K-L-M
我想刪除所有從分支a下降的分支(在這種情況下,b和c)。 有沒有一種方法可以檢測到分支b和c源自分支a?
現在,我正在考慮通過發現共同祖先(G)存在於哪個分支上來完成此任務; 它將返回a,b和c; 然后比較設置分支的時間。 然后,刪除除最早的分支以外的所有分支。
我想知道是否有一種更清潔的方法來執行此操作,如果沒有,我如何檢索創建分支的時間戳?
所需結果:
master: A-B-C-D-E----------------
\ \
branch a: F-H' branch d: N-O
好吧,這未必是最優雅的方式,但下面似乎這樣的伎倆:
git reflog <branch>
在上面的示例中,在“ b”上運行此命令將返回類似的結果:
137c91f b@{0}: branch: Created from a
它可以通過對相關的目標每一個分支提交運行此命令重建分支樹。
我會使用一個非常小的shell腳本。
#!/bin/bash
# identify the bad commit
BAD_COMMIT=$(git rev-parse "$1")
# loop through branches
for BRANCH in $(git for-each-ref --format="%(refname)" refs/heads); do
# detect if the branch is in the history, for which fgrep will exit 0
if (git rev-list $BRANCH | fgrep -q $BAD_COMMIT); then
echo "Deleting $BRANCH"
git branch -D $BRANCH
else
echo "Keeping $BRANCH"
fi
done
另請參見: SO答案:遍歷分支
1)刪除分支C 2)刪除分支B我不確定H'是什么; 我猜你想把提交H壓縮到提交G中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.