Git (一)预设环境和免密登录
背景
一直用的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 的工具,我们可以随时随意修改预设配置
/etc/gitconfig文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有--system选项的git config时,它会从此文件读写配置变量。~/.gitconfig或~/.config/git/config文件:只针对当前用户。 可以传递--global选项让 Git 读写此文件。当前使用仓库的 Git 目录中的
config文件(就是.git/config):针对该仓库。
每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
config help
[root@Git ~]# 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 johndoe@example.com
再次强调,如果使用了 --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
user.email=johndoe@example.com
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免密登录
- 使用全局命令定义密码保存
- 手动生成密码文件(也可以使用push或pull再次输入密码会自动生成在~/.git-credentials
#使用全局命令
[root@Git ~]# git config --global credential.helper store
#生成账户密码保存文件
[root@Git ~]# echo "https://username:password@email" > ~/.git-credentials
#查看gitconfig
[root@Git ~]# cat .gitconfig
[user]
name = username
email = email
[credential]
helper = store
在使用可以看到~/.gitconfig文件,会多了一项:
[credential]
helper = store
再次使用push或pull已经不需要密码了
但是也可以看到这个密码文件明文的哦,不安全
目测密文拿走了还是不安全。因为对称加密里面没有随机数。
如果真想安全可以考虑使用使用ssh的方式进行认证,然后用RSA非对称加密
使用ssh认证方式连接GitHub
GitHub默认使用https
当然也提供了ssh认证方式

查看当前使用模式
[root@Git ~]# 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
[root@Git ~]#git remote rm origin
添加SSH认证方式
git remote add origin Git地址
[root@Git ~]#git remote add origin git@github.com:Nedved-liao/kubernetes.1.30_CN.git
查看结果
[root@Git ~]#git remote -v
origin git@github.com:Nedved-liao/kubernetes.1.30_CN.git (fetch)
origin git@github.com:Nedved-liao/kubernetes.1.30_CN.git (push)
尝试push一下,
Please make sure you have the correct access rights
and the repository exists.
[root@Git ~]# 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: //再次输入
[root@Git ~]# 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

获取刚才生成的公钥信息先
[root@Git ~]# 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代码就不需要密码啦
Git (一)预设环境和免密登录的更多相关文章
- Git使用小技巧之免密登录
想要获取更多文章可以访问我的博客 - 代码无止境. 小代同学在使用Git的过程中发现,每次向远程仓库推送代码的时候都需要输入账号密码.做为一个程序员,多多少少都会有偷懒的思维.那么如何才能避免每次都要 ...
- Centos服务器ssh免密登录以及搭建私有git服务器
一.概述 服务器的免密登录和git服务器的搭建,关键都是要学会把自己用的机器的公钥添加到服务器上,让服务器“认识”你的电脑,从而不需要输入密码就可以远程登录服务器上的用户 免密登录当然是登录root用 ...
- Hadoop完全分布式环境搭建(二)——基于Ubuntu16.04设置免密登录
在Windows里,使用虚拟机软件Vmware WorkStation搭建三台机器,操作系统Ubuntu16.04,下面是IP和机器名称. [实验目标]:在这三台机器之间实现免密登录 1.从主节点可以 ...
- 版本管理·玩转git(远程仓库配置和配置公钥免密登录)
git系列的最后一部分内容,我们先来看看如何查看远程仓库. 输入 git remote -v 我们还可以删除远程库,输入 git remote remove origin 删除后再次查询,信息为空. ...
- GIT生成SSH-KEY公钥放到服务器免密登录
在使用git时老是碰到在push的时候提示没有权限的问题,那么现在咱们就来创建ssh-key来免密登录.我们来看看如何配置服务器端的 SSH 访问. 本例中,我们将使用 authorized_keys ...
- Git配置ssh免密登录
一.在用户目录下的.ssh目录下生成秘钥与公钥 如果用户目录下没有.ssh目录,则需要新建一个 cd ~/.ssh ssh-keygen -t rsa 一路回车即可 注:国内很多博客都会带上-C &q ...
- Git配置多个github账号免密登录
在公司开发中,有时候会存在公司账户跟私人账户共存,并随时需要切换的情况,这种情况下git可以配置多个ssh-key,无缝切换账号. 假如有两个github账号,一个是私人github账号,一个是公司g ...
- 【Git的基本操作九】ssh免密登录
SSH免密登录 1. 进入用户家目录 cd ~ 2. 删除原有的 .ssh 目录 rm -r .ssh 3. 运行命令生成 .ssh 目录 ssh-keygen -t rsa -C github或gi ...
- 大数据高可用集群环境安装与配置(03)——设置SSH免密登录
Hadoop的NameNode需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现 Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有 ...
随机推荐
- [codevs2597]团伙<并查集>
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...
- qt creator源码全方面分析(3-8)
目录 项目文件工作流程 多层目录模式 依赖解析模式 包含,链接和输出 包含 链接 输出 构建目录架构 项目文件工作流程 我们在前面已经讨论了所有的项目文件, qtcreator.pro qtcreat ...
- C 对抗赛
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,256m 问题描述 某校有n只信竞队伍,队伍编号1到n,每只队伍都有一定数量的队员,队伍中每个人都有一个CF积分,积分越高,意 ...
- Window.requestAnimationFrame()动画更新
概述 Window.requestAnimationFrame()方法告诉浏览器你希望执行动画,并且再下一次重绘之前要求浏览器调用一个特定的函数去更新动画.该方法把一个回调函数作为参数,该回调函数会在 ...
- 1014 Waiting in Line (30 分)
Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...
- c期末笔记(4)
未命名易错点 1.0<y<10 在c语言中,0<y<10不是一个正确的表达式,应该利用逻辑运算符替换(y>0&&y<10或者!(y<=0||y ...
- P3381 【模板】最小费用最大流 题解
CSDN同步 原题链接 前置知识: 从三种算法剖析网络流本质 简要题意: 给定网络图,求图的最大流,以及流量为最大流时的最小费用. 现在假设你们看了那篇网络流博客之后,所有人都会了 \(\text{E ...
- 修改linux服务器名称
临时修改: hostname test //退出shell,在进入即可修改成功 永久修改 CentOs: vi /etc/hostname //直接+名字即可 //Ubuntu 系统 /etc/hos ...
- 2017蓝桥杯购物单(C++B组)
原题: 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又来了!老板夫人开出了长长的购物单,都是 ...
- ubuntu18.04配置宽带上网
1.将 /etc/NetworkManager 目录下的 managed标签改为true 2.将 /etc/network/ 目录下的 interfaces文件只留下前两行: auto lo ifac ...