极客的git常用命令手册
- 1.1 权限配置篇
- 1.1.1 创建ssh key
- 1.1.2 本地存在多个密钥时,如何根据目标平台自动选择用于认证的密钥?
- 1.2 基础信息配置篇
- 1.2.1 配置用户名
- 1.2.2 配置用户邮箱
- 1.2.3 设置文件名大小写区分
- 1.2.4 设置命令行显示颜色
- 1.2.5 检查git全局所有配置
- 1.3 常用操作篇
- 1.3.1 将本地的一个项目加入git仓库
- 1.3.2 从git仓库下载一个项目
- 1.3.3 其他基础操作用法
- 2. 参考文献
1.1 权限配置篇
注:
- Codeup 同时支持这两加密算法,但是其他平台RSA还是主流
- jenkins 貌似还是只支持RSA,不太支持ED25519,使用时候要注意
1.1.1 创建ssh key
- 基于RSA算法(兼容性最强)
基于RSA算法生成密钥对命令如下:
ssh-keygen -t rsa -C "<注释内容>"
示例:
ssh-keygen -t rsa -C "fairy_xingyun@hotmail.com"
- 基于ED25519算法(更快更安全)
基于ED25519算法生成密钥对命令如下:
ssh-keygen -t ed25519 -C "<注释内容>"
- 注释会出现在.pub文件中,一般可使用邮箱作为注释内容
- 详情步骤参考:配置 SSH 密钥
示例:ssh-keygen -t ed25519 -C "fairy_xingyun@hotmail.com"
1.1.2 本地存在多个密钥时,如何根据目标平台自动选择用于认证的密钥?
当本地存在多个密钥,如果不设置认证规则,本机将随机选择一个密钥用于认证,可能造成认证失败。
因此,在如下场景中,需要自行定义认证密钥的路径:
- 本地存在多个密钥对应云效的不同账号。
- 本地存在多个密钥对应不同的代码平台(GitLab,GitHub,云效等)。
定义认证密钥路径规则
~/.ssh/config
配置内容如下:(如果不存在请新建一个)
# Codeup 示例用户1
HostName code.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
# Codeup 示例用户2,设置别名 codeup-user-2
Host codeup-user-2
HostName codeup.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/codeup_user_2_ed25519
# GitLab 平台
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_ed25519
按照上述配置,使用SSH协议访问时,SSH 客户端会使用文件指定的密钥进行认证,实现访问不同平台或同一平台的不同账号使用本地不同的 SSH 密钥进行认证。
访问 Codeup ,由于 HostName 一致,使用别名进行区分使用不同的密钥。
访问 GitLab,根据 HostName 进行区分使用不同的密钥。
# 访问 Codeup,将使用 ~/.ssh/id_ed25519.pub 密钥
git clone git@codeup.aliyun.com:example/repo.com
# 以 codeup-user-2 别名访问 Codeup 时,将使用 ~/.ssh/codeup_user_2_ed25519 密钥
git clone git@codeup-user-2:example/repo.com
# 访问 GitLab 平台,将使用 ~/.ssh/gitlab_ed25519 密钥
git clone git@gitlab.com:example/repo.com
1.2 基础信息配置篇
1.2.1 配置用户名
git config --glboal user.name qingfeng.zhao
验证检查配置是否正确
git config --glboal user.name
1.2.2 配置用户邮箱
git config --glboal user.email fairy_xingyun@hotmail.com
验证检查配置是否正确
git config --glboal user.email
1.2.3 设置文件名大小写区分
git config --global core.ignorecase false
- Windows下的git 默认配置是不区分大小写的,但是在linux 服务器上是大小写区分的,
- true则会忽略文件名的大小写,因此强烈建议修改这个全局配置为false
1.2.4 设置命令行显示颜色
git config --global color.ui auto
1.2.5 检查git全局所有配置
git config --global --list
1.3 常用操作篇
1.3.1 将本地的一个项目加入git仓库
cd existing_folder
git init
git remote add origin [url]
git add .
git commit -m "init project"
git push -u origin master
1.3.2 从git仓库下载一个项目
git clone -b master url
Tips:
- cd existing_folder------------------- 进入存在的文件夹
- git init ---------------------------------- git 初始化,会生成隐藏文件.git
- git remote add origin [url]---------- git 远程仓库定义别名
- git add------------------------------ git 添加当前路径下所有文件
- git commit -m “init project”---------------------------- git 提交到本地库
- git push -u origin master----------- git提交到远程仓库
1.3.3 其他基础操作用法
git命令语法说明 | 命令解释 | 命令示例 |
---|---|---|
git commit | 将本地修改保存到本地仓库中 | git commit -m "init project" |
git push | 将本地仓库修改推送到服务器上的仓库中 | git push |
git fetch | 相当于是从远程获取最新版本到本地,不会自动merge | git fetch |
git merge | 远程仓库与本地仓库合并 | git merge |
git pull | 相当于是从远程获取最新版本并merge到本地,等价于先执行git fetch 再执行git merge | git pull |
git checkout [branch-name] | 切换到指定的分支并更新工作目录 | git checkout master |
git merge [branch] | 将指定分支的历史记录合并到当前分支中 | git merge dev |
git rm --cached [file] | 从版本控制中删除该文件,但在本地保留该文件 | git rm --cached readme.md |
2. 参考文献
- 配置SSH KEY密钥
- 如何在同一台电脑上配置多个SSH Key?
- 阿里云Code SSH KEY 代码入库
- 版本控制之Git 修炼手册
- 基础的命令行命令
- 重置阿里云Code密码