一、基础操作
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-tagsgit fetch -p -P origingit 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
本文详细介绍了Git的各种基础操作,包括生成SSH密钥、拉取和推送远程分支、打标签、删除分支和标签等。此外,还讲解了如何进行更复杂的组合操作,如迁移Git仓库、清理无效的远程追踪分支等。这些内容对于日常的Git使用和版本控制管理非常实用。
1768





