以下命令中 [ ] 包裹的值为动态值,需要根据情况替换,比如
git push origin [branchName]
,[branchName] 需要根据实际情况的值决定,比如:git push origin master
常用命令
- 创建本地仓库:
git init
- 创建中央仓库:
git init --bare
- 拉取远程分支所有历史提交记录:
git pull origin [branch] --allow-unrelated-histories
撤销暂存文件
- 撤销所有:
git restore --staged .
- 撤销文件:
git restore ---staged [filename]
撤销工作区文件
- 撤销所有:
git restore .
- 撤销文件(多个文件可以用空格隔开):
git restore [filename]
标签
- 快速打标签:
git tag [tagName]
- 推送至远程:
git push origin [tagName]
cherry-pick
将其他分支的 commit 迁移至当前分支(注意先切换到需要上线的分支): git cherry-pick [commitid]
一般在热修复,脚本,补丁需要及时上线,但又不能基于开发分支代码部署,将临时代码合并到上个上线的版本部署一版的场景中会用到。
回滚
- 回滚到某次提交:
git reset [commitid]
- 强制回滚某次提交,并且回删除节点后的所有提交(慎用):
git reset --hard [commitid]
- 强制与远程分支保持一致:
git reset --hard origin/[branchName]
分支管理
- 设置远程分支为默认分支:
git branch --set-upstream-to= origin [branchName]
删除分支
- 删除本地分支:
git branch -D [branchName]
- 删除远程分支:
git push origin -d [branchName]
- 批量删除所有分支:
git branch | grep -v 'develop' | xargs git branch -D
|
管道命令,用于将一串命令串联起来。前面命令的输出可以作为后面命令的输入git branch
列出本地所有分支grep
搜索过滤命令。使用正则表达式搜索文本,并把匹配的行打印出来xargs
参数传递命令。用于将标准输入作为命令的参数传给下一个命令
常见问题
1. refusing to merge unrelated histories(拒绝合并不相关历史)
这种情况一般是本地仓储和远程仓储的提交历史不一致,git 需要确认是否合并
解决:git pull origin master --allow-unrelated-histories