极客的git常用命令手册

1.1 权限配置篇

在这里插入图片描述

注:

  • Codeup 同时支持这两加密算法,但是其他平台RSA还是主流
  • jenkins 貌似还是只支持RSA,不太支持ED25519,使用时候要注意

1.1.1 创建ssh key

  • 基于RSA算法(兼容性最强)

基于RSA算法生成密钥对命令如下:

ssh-keygen -t rsa -C "<注释内容>"

示例:

ssh-keygen -t rsa -C "[email protected]"
  • 基于ED25519算法(更快更安全,部分平台不太兼容)

基于ED25519算法生成密钥对命令如下:

ssh-keygen -t ed25519 -C "<注释内容>"
  • 注释会出现在.pub文件中,一般可使用邮箱作为注释内容
  • 详情步骤参考:配置 SSH 密钥
    示例:
ssh-keygen -t ed25519 -C "[email protected]"

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 [email protected]: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 [email protected]:example/repo.com

1.2 基础信息配置篇

1.2.1 配置用户名

git config --global user.name qingfeng.zhao

验证检查配置是否正确

git config --global user.name

1.2.2 配置用户邮箱

git config --global user.email [email protected]

验证检查配置是否正确

git config --global 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  --initial-branch=master
git remote add origin [email protected]:geekxingyun/spring-boot-best-practices-sample.git
git add .
git commit -m "Initial commit"
git push -u origin master

github由于默认分支是main而不是master, 因此稍有不同

cd existing_folder
git init --initial-branch=main
git remote add origin [email protected]:geekxingyun/spring-boot-best-practices-sample.git
git add .
git commit -m "Initial commit"
git push -u origin main

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. 参考文献

猜你喜欢

转载自blog.csdn.net/hadues/article/details/130755246