git原理和常用的操作

      首先我们先简单了解一下持续集成,通俗来讲,所谓持续集成,就是当我们提交了一些自动化代码时候,我们需要工具来帮我们自动的拉取代码,并且把代码自动化的运行起来,当然会借助于类似于jenkins这样的工具,

      1: 首先,代码需要找一个地方管理起来,把代码存在哪里,是持续集成的第一步,当然也被叫做配置管理,也被称为版本控制

      2: 版本控制:每次需要提交不同的内容,所以就会有不同的版本和修改内容。

      3: 版本控制可以帮助你把所有的版本都会保存下来,很清新,只让你看到最新的版本,记录时间、修改内容,比较历史版本,

这样的版本控制工具,早期有svn,近期用的多的是git

svn/csv: 集中式,有一个中心服务器,其他的就是个人电脑,

              提交操作:个人电脑通过连接到网络连接到服务器,向服务器提交修改内容

              拉取:连接上服务器,拉取

              缺点:非常依赖于网络 ,依赖于服务器

git:分布式的版本管理系统,不依赖于网络,每个电脑上都相当于有一个小型服务器,不依赖网络

1:安装:搜索git for window,一路next安装即可,很简单

2:安装完成后, 查看git是否已经安装: git --version

3:新建一个目录,git init,作用主要用来初始化一个空的git本地仓库

   主要用来初始化一个空的git本地仓库。执行完上面的命令,当前目录下会自动生成.git隐藏文件夹,该隐藏文件夹就是git版本库 

4: 在这个空的本地git仓库,我们来创建一个文件, helloworld.txt 的文件,输入内容并且保存

接下来,我们思考一下,我们创建的这个文件,受git的控制吗?我们来查看一下, 

5:  我们输入命令,git status  (-s 表示short) ,查询状态

含义:用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。

输入这个命令,我们可以看到下面的提示,提示没有什么增加的或者没有被git跟踪 的文件, 

我们采用git status -s 方式查看,可以看到前面是两个 ?? ,表示不知道这个是啥文件,表示疑惑,就是说这个文件没有收到git跟踪

6:  为了解决这个问题:我们首先需要一个暂存区,暂存的动作, 我们需要用到 git add . 这个命令,

git add 后面加的是路径,. 表示当前路径下所有没有被跟踪的文件,会递归从这个路径下找文件,所有没有被跟踪过的文件

 添加到暂存区后,我们在来查看下状态,看看是否有啥变化,变成了A ,代表已经被添加到暂存区了,被跟踪了,不是两个红色的??了

 我们再来修改一下helloworld.txt 里面的内容,修改完成后,再来查看一下状态,

A  表示增加到暂存区,M 表示修改了

 

再来把修改的内容继续存在暂存区,然后在查看状态:

 

7:下面我们来提交到本地仓库,git commit -m "" 后面加注释性的问题,表面当前修改了哪些内容,git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,如图:

8: 提交完成后,我们可以使用 git log 命令来查看一下 ,我们的提交记录,这个东西是唯一的,git log 会按提交时间列出所有的更新,每次更新都有一个 SHA-1 校验和、作者的名字 和 电子邮件地址、提交时间,最后缩进一个段落显示提交说明。

 注意:进行git commit 提交操作的时候,可能会报一个不知道你是谁的一个提示信息,需要自报家门,需要配置git设置:

执行如下两个命令,用来配置你的用户名和邮箱

git config --global | user.name "your name"

git config --global | user.email "email@ example.com"

然后 git commit - m "首次提交文件"

如果没有远程库,工作结束,如果git push 提交到远程仓库

9 : 远程库:

简单来说一下 github,如果你的代码需要保密托管,需要付费,

对于免费用户上面的所有代码都是公开的,如果没有付费,就是公开的代码,

gitlab,需要私有化部署的,也属于一个远程仓库,公司局域网内可以访问的,

 git:分布式管理代码的一种方式,就类似于一门通用的语言一样

github和gitlab:都是符合这个工具标准的仓库管理工具

远程仓库添加完成后,如何和本地仓库管理起来呢?

git remote add origin + 地址(远程仓库的地址)

关联之后可以用git remote -v 来检查是否关联成功

 

关联完成后,如果第一次提交代码git push origin master,需要验证远程仓库的账号和密码,输入即可

========================================================================================= 

实际的工作方式,远程仓库的克隆,

已有远程仓库,首先会把远程仓库里面的内容,复制一份,clone到本地:git clone  git地址

例如下载到本地:

也可以自己可以注册一下github,如果有github的账号,可以自己创建一个远程仓库,

 

    1.git remote 不带参数,列出已经存在的远程分支

如果没有的话,可以通过 git remote  add ,添加一个远程分支名称,

 

git push origin master 表示提交到 origin 仓库,master主干

git push的一般形式为 git push <远程主机名> <本地分支名>  <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,

也可以直接写 git push

============================================

新分支初始内容:

每个分支都有一个指针,新建一个分支,首先是新建一个指针。

而且新分支的指针会和当前分支指向同一个提交点。

新分支包含的提交点就是从第一个提交点到分支指针指向的提交点。

 查看当前分支的提交日志 :git log --oneline

git log 查看完整的分支提交日志记录,输出的更详细啦

切换分支: git checkout 分支名称

查看本地分支   git branch

分支的合并

git merge dev : 把dev分支上的数据合并到master上,

快速合并:Fast-forward,快速合并的前提其实就是修改了指针的指向,当时快速合并的前提是,主分支上面的数据没有被动过,如果被动过就不能采用这种方式了

三方合并:在不具备快速合并的基础上,使用三方合并,会形成一个新的提交点,

注意:这两种方式都是git内部帮助我们实现的,

合并冲突

两个分支上面的同一个文件内容不一样,就会产出冲突,截图

 

 

 最后再进行一次commit提交即可

 

特别说明:服务器上的 Git - 生成 SSH 公钥

生成 SSH 公钥

许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

我们需要寻找一对以 id_dsa 或 id_rsa 命名的文件,其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是与之对应的私钥。 如果找不到这样的文件(或者根本没有 .ssh 目录),你可以通过运行 ssh-keygen 程序来创建它们。 在 Linux/macOS 系统中,ssh-keygen 随 SSH 软件包提供;在 Windows 上,该程序包含于 MSysGit 软件包中。

$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

首先 ssh-keygen 会确认密钥的存储位置(默认是 .ssh/id_rsa),然后它会要求你输入两次密钥口令。 如果你不想在使用密钥时输入口令,将其留空即可。 然而,如果你使用了密码,那么请确保添加了 -o 选项,它会以比默认格式更能抗暴力破解的格式保存私钥。 你也可以用 ssh-agent 工具来避免每次都要输入密码。

现在,进行了上述操作的用户需要将各自的公钥发送给任意一个 Git 服务器管理员 (假设服务器正在使用基于公钥的 SSH 验证设置)。 他们所要做的就是复制各自的 .pub 文件内容,并将其通过邮件发送。 公钥看起来是这样的: 

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local

什么是密钥?

网络传输过程中,通信双方为了安全定义的一种协议,加密,

 加密,加密的内容,暗号:就是密钥,密文 = 函数(内容,密钥)

函数的输出就是密文,密钥就是加密用的密钥和解密用的密钥是一样的

加密的密钥和解密的密钥不一样就是,非对称加密!!!!!!!!!!!!!,公钥,私钥,

学习地址:

https://www.bilibili.com/video/BV1Mf4y117f3?p=7

看了几个git的课程,这个讲解的好!推荐,还是看不懂的朋友可以看这个视频进行学习哈。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫_water

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值