一、基础操作
1、生成密钥
ssh-keygen -t rsa -b 2048 -C "邮箱"
选项:
-t
:type的缩写,即指定密钥的类型,密钥的类型有两种,一种是rsa
,一种是dsa
。默认使用rsa
密钥,所以不加-t rsa
也行。-b
:bit的缩写,指定密钥长度,对于rsa
密钥,最小要求768位,默认是2048位。dsa
密钥必须恰好是1024位(FIPS 186-2 标准的要求)。-C
:comment的缩写,表示提供一个注释,用于识别这个密钥。可以省略。引号里的内容为注释的内容,所以引号里面不一定得填邮箱,可以输入任何内容。
若过程中没有指定密钥文件名的话,默认生成的私钥文件名为:id_rsa
,公钥文件名为:id_rsa.pub
。如果要从GitHub或者GitLab上克隆出项目,则需要在它们各自设置里添加SSH Keys,注: 要添加公钥文件的内容。
2、仓库
(1)拉取远程仓库
git clone 仓库地址 本地目录名
(2)查看远程仓库与本地仓库的关系
git remote show origin
(3)删除本地指定的远程仓库地址
git remote remove 远程仓库地址(如:origin)
(4)添加本地指定的远程仓库地址
git remote add origin 远程仓库地址(如:git@192.168.3.251:jaron/test.git)
3、分支
(1)查看分支列表
git branch -a
选项:
-a
:all的缩写,同时列出本地分支和远程分支。若不加该选项,则只列出本地分支。
(2)修改分支名称
git branch -m 旧分支名 新分支名
(3)删除本地分支
git branch -d 本地分支名
或git branch -D 本地分支名
选项:
-d
:delete的缩写,会在删除前检查merge状态(其与上游分支或者与head)。-D
:是--delete --force
的简写,它会直接删除。
(4)删除远程分支
git push origin --delete 远程分支名
(5)推送远程分支
git push origin 远程分支名
或git push -f origin 远程分支名
选项:
-f
:是--force
的简写,表示强制覆盖远程分支。
(6)拉取远程分支并创建本地分支
git checkout -b 本地分支名 origin/远程分支名
(7)清理本地无效的远程追踪分支
git remote prune origin
4、标签
(1)获取指定提交上的标签
git tag --contains 哈希值
(2)打标签
git tag 标签名
或git tag -a 标签名 -m "注释"
(3)推送标签
git push origin 标签名
(4)删除本地标签
git tag -d 标签名
(5)删除本地所有标签
git tag -l | xargs git tag -d
(6)清理本地无效的远程追踪标签
git fetch --prune --prune-tags origin
也可简写为:
git fetch --prune --prune-tags
git fetch -p -P origin
git fetch -p -P
(7)拉取远程所有标签
git fetch --tags
(8)删除远程标签
git push origin :refs/tags/标签名
5、日志
(1)查看提交日志
git log
:查看完整提交日志列表。
选项:
-
--oneline
:将每个提交显示在一行内。 -
--format="%H %s"
:指定输出格式。%H
表示显示提交完整哈希值,默认%h
表示简短的提交哈希值%an
:作者的名字%ae
:作者的电子邮件地址%s
:提交信息主题%b
:提交信息的主体(整个信息)%ct
:提交的时间戳(秒级),例如:1702042278%ci
:以 ISO 8601 格式显示提交日期和时间%cI
:显示提交日期和时间的 ISO 8601 格式,但忽略时区信息%cr
:显示提交日期和时间的相对格式(例如 “2 hours ago”)%cd
:以 YYYY-MM-DD 格式显示提交日期%cD
:以 MM/DD/YYYY 格式显示提交日期
-
--reverse
:指定正序显示提交日志,默认是倒序。
(2)统计当前分支提交次数
git log --oneline | wc -l
windows平台下没有wc
指令,需要使用:git log --oneline | find /v /c ""
(3)根据提交哈希值查看是第几次提交
git log --format="%H" --reverse | grep -n 哈希值 | cut -d':' -f1
6、子模块
(1)在仓库中首次拉取子模块
git submodule update --recursive --init
(2)在仓库中更新子模块
git submodule update --recursive --remote
7、配置
(1)设置CRLF和LF
- 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
- 提交时转换为LF,检出时不转换
git config --global core.autocrlf input
- 提交检出均不转换
git config --global core.autocrlf false
- 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
- 允许提交包含混合换行符的文件
git config --global core.safecrlf false
- 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
二、组合操作
1、迁移Git仓库
# 删除原来的远程地址
git remote remove origin
# 新指定新的远程地址
git remote add origin git@192.168.3.251:jaron/test.git
# 上传所有本地分支至新的远程地址
git push -u origin --all
# 上传所有tag至新的远程地址
git push -u origin --tags