当前位置: 首页 > news >正文

极客的git常用命令手册

极客的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.comPreferredAuthentications publickeyIdentityFile ~/.ssh/id_ed25519# Codeup 示例用户2,设置别名 codeup-user-2
Host codeup-user-2
HostName codeup.aliyun.comPreferredAuthentications publickeyIdentityFile ~/.ssh/codeup_user_2_ed25519# GitLab 平台
HostName gitlab.comPreferredAuthentications publickeyIdentityFile ~/.ssh/gitlab_ed25519

按照上述配置,使用SSH协议访问时,SSH 客户端会使用文件指定的密钥进行认证,实现访问不同平台或同一平台的不同账号使用本地不同的 SSH 密钥进行认证。

访问 Codeup ,由于 HostName 一致,使用别名进行区分使用不同的密钥。

访问 GitLab,根据 HostName 进行区分使用不同的密钥。

# 访问 Codeup,将使用 ~/.ssh/id_ed25519.pub 密钥
git clone git@code.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  --initial-branch=master
git remote add origin git@github.com: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 git@github.com: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相当于是从远程获取最新版本到本地,不会自动mergegit fetch
git merge远程仓库与本地仓库合并git merge
git pull相当于是从远程获取最新版本并merge到本地,等价于先执行git fetch 再执行git mergegit 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密码
http://www.lryc.cn/news/69557.html

相关文章:

  • spring-data 一统江湖,玩转多种数据源
  • 【EMC专题】为什么PCB上的单端阻抗控制在50欧?
  • 想自学写个操作系统,有哪些推荐看的书籍?
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7
  • ES6中flat与flatMap使用
  • 苹果手机、电脑如何进行屏幕录制?苹果录屏功能在哪?
  • 什么是研发 Lead Time?我悟了!
  • android 窗口焦点介绍
  • 研发工程师玩转Kubernetes——构建、推送自定义镜像
  • [网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
  • VP记录:Codeforces Round 873 (Div. 2) A~D1
  • 【C++】函数提高
  • 【可持续能源:让我们迈向绿色、可持续未来的道路】
  • ES6中数组新增了哪些扩展?
  • 【算法】动态规划
  • HNOI2014 世界树
  • 在MyBatis XML文件中处理特殊符号的方法,如“>”、“<”、“>=”、“<=”这些符号XML会报错如何处理
  • 第三章--第一篇:什么是对话系统?
  • 项目基础搭建
  • PFCdocumentation_FISH Rules and Usage
  • 如何完美卸载VS2015(2023年5月份实测有效)
  • JavaScript如何声明和定义函数
  • 微信小程序 WebSocket 通信 —— 在线聊天
  • VMware快照:简化虚拟化环境管理与数据保护
  • 图的最短路径
  • RHCE----Shell变量和引用
  • 【Redis】聊一下缓存雪崩、击穿、穿透、预热
  • 全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布
  • 【Python共享文件】——Python快速搭建HTTP web服务实现文件共享并公网远程访问
  • Mysql数据库分库分表