git commit tree 保留最新20筆

#!/bin/bash

cd /tmp
git clone https://github.com/chewing/libchewing.git
cd libchewing
git checkout -b new-tree
git reset --hard $(git commit-tree HEAD~21^{tree} -m "initial commit")
for i in $(seq 20 -1 0)
do
    if [[ $(git cat-file -p master~${i} | grep parent | wc -l) -gt 1 ]]; then
        git cherry-pick --allow-empty -m 1 master~${i}
    else
        git cherry-pick master~${i}
    fi
done
git diff master --exit-code

上傳到github

git remote add backup https://github.com/shihyu/runninglinuxkernel_4.git
git push -u backup new-tree

书籍推荐