如何安全的在一个已有的git分支上,自动化的切换到另外一个分支指定commit?下面是一种干净的安全的可以自动化的做法:
清理本地脏数据
git checkout .
git clean -df .
将 commit 重置到 HEAD
git reset --hard HEAD
重置子git模块
git submodule foreach --recursive git reset --hard
git submodule update --init --recursive
删除可能的名字叫做 swap_tmp 的分支
git branch -D swap_tmp
立刻切换到 swap_tmp 分支
git checkout -b swap_tmp
删除旧的目标分支,这是因为本地 target_branch 可能已经被污染,删除以免冲突
git branch -D target_branch
从远程仓库拉取目标分支最新版本
git fetch origin target_branch
切换到目标分支
git checkout target_branch
重置到该分支的目标commit
git reset --hard target_commit
重置子git模块
git submodule foreach --recursive git reset --hard
git submodule update --init --recursive