Git 手册

以下命令中 [ ] 包裹的值为动态值,需要根据情况替换,比如 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