git stash -a //缓存所有文件
git stash pop //恢复所有缓存
git checkout -b dev origin/dev //切换到dev分支上,接着跟远程的origin地址上的dev分支关联起来
//推送本地分支到远程仓库
git push origin localbranchname:remotebrancname
git revert onefile //https://www.freecodecamp.org/news/git-revert-file-reverting-a-file-to-a-previous-commit/
//Git中获取当前分支名git
git branch --show-current
//git从指定的commit创建分支
git checkout -b branchname <commit-hash>
//以下两个命令需要在git bash下执行,因为window下找不到grep\xargs命令
//This script will delete all local branches except the master branch, including the non-merged branches.
git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" | xargs git branch -D
//The -d is a soft delete option and only removes the merged branches.
git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" | xargs git branch -d
//合并某个提交
git cherry-pick <commit-hash>
//列出包含某个提交的所有标签
git tag --contains f3a0b78
//克隆某个Tag的代码
git clone -b v9.2.2 https://gitlab.kitware.com/vtk/vtk.git
//回滚到某个提交
git log --oneline
git reset --hard <commit-hash>
git checkout -b branchname
git push origin localbranchname:remotebranchname
//如何撤销一个成功的“git cherry-pick”操作
https://geek-docs.com/git/git-questions/1519_git_how_to_undo_a_successful_git_cherrypick.html
在一个分支上连续解决多个问题:
1.git checkout -b branchname <commit-hash>
2.git commit 1
3.git push origin branchname:remotebranchname1
4.git reset --hard <commit>的上一个id,可通过git log查看,不用git revert,因为其会保留提交记录
5.git commit 2
6.git push origin branchname:remotebranchname2