Git (一)预设环境和免密登录

文章目录[x]
  1. 1:二进制安装
  2. 2:yum安装
  3. 3:用户信息
  4. 4:文本编辑器
  5. 5:检查配置信息

背景

  一直用的svn,这段时间换了之后才发现git的强大功能。缺点就是可能上手比较难一点。
接下来就带你Git入门

 

Git是什么?

Git是目前世界上最先进的分布式版本控制系统

Git有什么特点?好用,好用

那什么是版本控制系统?版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理

 

安装

 

可以到官网Git查看相关信息

或者可以在GitHub上查看

官网有很详细的安装教程

二进制安装

二进制最新版下载地址

或者在GitHub下载

#开始安装
$ tar -zxf git-2.0.0.tar.gz
$ cd git-2.0.0
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info

#当你安装完后,可以使用git命令来测试
$ git clone git://git.kernel.org/pub/scm/git/git.git

yum安装

$ yum install git -y

yum安装的配置文件  ~/.gitconfig 针对当前用户

 

设定Git

 安装好Git后,我们就可以进行初始化环境了

设定好的预设环境(Git账号地址)

Git附带有一个git config 的工具,我们可以随时随意修改预设配置

  1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。

  2. ~/.gitconfig~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。

  3. 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

config help

[[email protected] ~]# git --help
用法:git [--version] [--help] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

最常用的 git 命令有:
   add        添加文件内容至索引
   bisect     通过二分查找定位引入 bug 的变更
   branch     列出、创建或删除分支
   checkout   检出一个分支或路径到工作区
   clone      克隆一个版本库到一个新目录
   commit     记录变更到版本库
   diff       显示提交之间、提交和工作区之间等的差异
   fetch      从另外一个版本库下载对象和引用
   grep       输出和模式匹配的行
   init       创建一个空的 Git 版本库或重新初始化一个已存在的版本库
   log        显示提交日志
   merge      合并两个或更多开发历史
   mv         移动或重命名一个文件、目录或符号链接
   pull       获取并合并另外的版本库或一个本地分支
   push       更新远程引用和相关的对象
   rebase     本地提交转移至更新后的上游分支中
   reset      重置当前HEAD到指定状态
   rm         从工作区和索引中删除文件
   show       显示各种类型的对象
   status     显示工作区状态
   tag        创建、列出、删除或校验一个GPG签名的 tag 对象

命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些指南。参见
'git help <命令>' 或 'git help <指南>' 来查看给定的子命令帮助或指南。

 

 

用户信息

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

文本编辑器

既然用户信息已经设置完毕,你可以配置默认文本编辑器了,当 Git 需要你输入信息时会调用它。 如果未配置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。 如果你想使用不同的文本编辑器,例如 Emacs,可以这样做:

$ git config --global core.editor emacs

Warning

Vim 和 Emacs 是像 Linux 与 Mac 等基于 Unix 的系统上开发者经常使用的流行的文本编辑器。 如果你对这些编辑器都不是很了解或者你使用的是 Windows 系统,那么可能需要搜索如何在 Git 中配置你最常用的编辑器。 如果你不设置编辑器并且不知道 Vim 或 Emacs 是什么,当它们运行起来后你可能会被弄糊涂、不知所措。

检查配置信息

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。

$ git config --list
user.name=John Doe
[email protected]
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

你可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。

你可以通过输入 git config <key>: 来检查 Git 的某一项配置

$ git config user.name
John Doe

--取自Git-前的配置

预设后就可以使用功能Git了,但是还有个很烦的问题

每次push,pull都需要输入用户名密码,简直就是浪费生命

 

Git免密登录

 

  1. 使用全局命令定义密码保存
  2. 手动生成密码文件(也可以使用push或pull再次输入密码会自动生成在~/.git-credentials
#使用全局命令
[[email protected] ~]# git config --global credential.helper store

#生成账户密码保存文件
[[email protected] ~]# echo "https://username:[email protected]" > ~/.git-credentials

#查看gitconfig
[[email protected] ~]# cat .gitconfig 
[user]
	name = username
	email = email
[credential]
	helper = store

在使用可以看到~/.gitconfig文件,会多了一项:

[credential]
    helper = store

再次使用push或pull已经不需要密码了

但是也可以看到这个密码文件明文的哦,不安全

目测密文拿走了还是不安全。因为对称加密里面没有随机数。

如果真想安全可以考虑使用使用ssh的方式进行认证,然后用RSA非对称加密

 

使用ssh认证方式连接GitHub

 

GitHub默认使用https

当然也提供了ssh认证方式

查看当前使用模式

[[email protected] ~]# git remote -v
origin	https://github.com/Nedved-liao/kubernetes.1.30_CN (fetch)
origin	https://github.com/Nedved-liao/kubernetes.1.30_CN (push)

命令移除HTTPS的方式

git remote rm origin

[[email protected] ~]#git remote rm origin

添加SSH认证方式

git remote add origin Git地址

[[email protected] ~]#git remote add origin [email protected]:Nedved-liao/kubernetes.1.30_CN.git

查看结果

[[email protected] ~]#git remote -v
origin	[email protected]:Nedved-liao/kubernetes.1.30_CN.git (fetch)
origin	[email protected]:Nedved-liao/kubernetes.1.30_CN.git (push)

尝试push一下,

Please make sure you have the correct access rights
and the repository exists.

[[email protected] ~]# git push origin master
Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

使用 ssh-keygen -t rsa -C "GitHubusername"命令生成公钥,

公钥保存路径可以自定义(默认/root/.ssh/id_rsa)

Enter file in which to save the key (/root/.ssh/id_rsa):      //在这填写的自定义路径

Enter passphrase  //输入你自定义密码

Enter same passphrase again:  //再次输入

[[email protected] ~]#  ssh-keygen -t rsa -C "Nedved-liao" 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.git_rsa.
Your public key has been saved in /root/.git_rsa.pub.
The key fingerprint is:
SHA256:Xy2URzaPQceBAFZ8j7MvGARI3KH4ZvtSiRZdwd7J4d8 Nedved-liao 
The key's randomart image is:
+---[RSA 2048]----+
|      o.o+*+o.Boo|
|      .ooo + B *.|
|     . .. + B B .|
|      .. . + X . |
|       +S o o = .|
|      oo.+ o o .E|
|      ... . o .  |
|       ..  . . . |
|        ..    .  |
+----[SHA256]-----+

进入GitHub页面

setting-SSH AND GPG KEY

获取刚才生成的公钥信息先

[[email protected] ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAwezaC1yc2EAAAADAQABAAABAQDSorEvBERVenonyrxYWJP2iX2WXRvjssxFZh54RFYYVHMEg0MYuVDaITrOhCHcVPl04Ve5bDQCkVgzzixh12wriaoCPRuEsihz429sgxCyWZgw9284czkd2pNN1WsZ3lx14c+cdHmN2aoIAAuwubTUrBM2MKcTc+JG6YbY8Fd/fDAohwejMkxJ46AULsj1e8J8xdo8OyMniX9A4aHlwewg1dwerLB9n12JsyIZOqkFjQdbHt2qKTQBfIYx712bExBDPbv9zwerJL31pVsQpGCcUGwwYj5EtizjruJFEBD6kkH8+6ezLbDKPWXlgdWmHdjYrfItYjFZ9r7ez2Krwwqun Nedved-liao?

 

 点击New ssh key 填写信息,把刚才cat 出来的信息全部复制粘贴到Key栏

 

点击add ssh key

 再次使用git 拉取GitHub代码就不需要密码啦

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像