zoukankan      html  css  js  c++  java
  • 多测师课堂004_git_(全)高级讲师肖sir

     
    一、git介绍
    git
    Git(读音为/gɪt/。),是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
    Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
    作用:更好的管理我们的程序,比如你原来提交过的内容,后面虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。现在很多其他自由软件项目中也使用了 Git,
    如 :很多 Freedesktop 的项目迁移到了 Git 上。
     
     
    二、github介绍
    gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。(远程仓库)
     
    它是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等,也在github上公布有开源的代码。
    git可以认为是一个软件,能够帮你更好的写程序,
    github则是一个网站,这个网站可以帮助程序员之间互相交流和学习。
     
    三、术语
    1、版本控制:一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看历史记录,备份以便恢复以前的版本软件工程技术。
    优点: (1)实现跨区域多人协同开发
    (2)追踪和机载一个或多个文件的历史记录
    (3)组织和保护你的源代码和文档
    (4)统计工作量
    (5)并行开发,提高开发效率
    (6)跟踪记录整个软件的开发过程
    (7)减轻开发人员的负担,节省时间,同时降低人为错误
    (理解为:用于管理多人协同开发项目技术)
    2、仓库:受版本控制所有文件修订历史的共享数据库或文件
    3、工作空间:本地硬盘或linux用户账户上编辑的文件副本
    4、 工作区 /工作树:工作区中包含了仓库的工作文件,可以修改内容和提交更改。
    5、暂存区:暂存区是工作去用来提交更改( commit)  前可以暂存工作区的变化
    工作区(git  add)----------  暂存区(git   commit)-------版本库
    6、签出(checkout):从仓库中将文件的最新修改版本复制到工作空间
    7、签入(checkin):将新版本复制回仓库
    8、提交 (commit):对各自的工作副本做更改,并将这些更改提交到仓库
    9、冲突(conflict):多人对同一个文件的工作副本进行修改,并将这些更改提交到仓库
    10、合并(merge):将某分支上的更改连接到主干分支;
    11、分支(branch):从主线上分开的副本,默认分支叫master
    12、锁(lock):获得修改文件的专有权限
    13、头(HEAD):头是一个象征性的参考,最常用以直系那个当前选择的分支
     
    四、常见的版本控制器
    git、svn、cvs、vss、tfs
     
    五、Git 与 SVN 区别
    Git 与 SVN 区别点:
    1、Git 是分布式的,SVN 不是
    2、Git 把内容按元数据方式存储,而 SVN 是按文件
    3、Git 分支和 SVN 的分支不同
    4、Git 没有一个全局的版本号,而 SVN 有
    5、Git 的内容完整性要优于 SVN
     
     

    六、git 安装:

    七、git使用:

    7.1、git的设置

    ——进入git界面(选择git bash):进入时,显示默认进入home目录

    选择git bash的原因:可以使用linux命令来进行git的操作

    ——进入d盘,并在d盘创建一个git目录做练习

     cd  /

    cd  d

    mkdir  git

     

    ——进入git目录,并在git目录下创建版本库,创建好的版本库会在git目录下产生一个隐藏文件夹,此文件夹即版本库;

    cd git   进入创建的目录

    git init    建仓库

    ——进入git目录,并在git目录下创建版本库,创建好的版本库

    会在git目录下产生一个隐藏文件夹,此文件夹即版本库;

     

    ——进行用户设置(没有弹出任何提示则为设置成功,在git  config --local  --list最后查询)

    用户名和用户邮箱(使用我们github 注册的账号和邮箱)

    git config user.name “xlh123123”

    git config user.email “812462278@163.com”

    git config  --local --list   查看仓库当前配置

    7.2、git的使用

    ——创建一个文件aa,并编辑,用于练习使用git文件版本管理

    Touch aa

    Vim aa

    Cat aa

     

     

     

    (注:用cat命令查看我输入了多少行数据,共三行)

    ——开始添加至缓存区

    Git add aa

     

    ——用git stauts 查看aa文件的状态

    Git status

    (注:可以看到提示,有新文件(new files)添加了,但是没有提交(not commit yet))

    ——把aa文件进行提交至我们创建的版本库

    Git commit -m aa

     

    (注:提示我们提交成功,1个文件已改变,新增三行数据,此时aa文件已提交到版本库)

    (注2:git add命令仅把文件添加到缓存,但并未实际提交到版本库)

    (注3:git commit命令会把在缓存区的所有文件提交到版本库);

    关系如图: 

    ——提交完成后,我们回头看看aa文件的状态

     

    (注:这里提示我们,本地文件夹和版本库的aa文件是一致的,不需要提交,工作树是干净的)

     7.3 、gitgithub的连接

    Github介绍:https://github.com/  

    (注:github像一个程序代码图书馆,很多程序员把他们写的代码上传到github,公开并供别人下载,我们的操作就是连接好后,把自己写的文档上传至自己的github上)

    ——先进行注册在hub上的账户;

     

    ——注册完毕后登录;建立个人的存储库

    或者

    ——在我的存储库下建立一个新的存储库:

     

     

     

    git和github 连接需要秘钥:

     ——填写资料,填完后,告诉我们创建成功:

    (注:这就是我们的存储库url(git@github.com:dayday001/-sir-.git),通过url我们可以让我们的git连接到我们的版本库)

     

    ——在git上获取密钥

    Ssh-keygen (输入后连按三次回车)(箭头指向为密钥在所在路径)

    ——去对应路径下找到密钥,用记事本打开

     

     

    ——进入github添加我们的密钥

     

    以上git与github的连接就成功了。

    7.4gitgithub之间互传文件

    ——将git与github上前面新创建的存储库连接(我的url:git@github.com:dayday001/-sir-.git

    Git remote add origin git@github.com:dayday001/-sir-.git

     

    ——将提交的aa文件上传至github

    Git push -u origin master

    此时github上面已有我们上传的文件

     

    ——拉取github上的文件

      git pull origin master

    ——下载整个存储库(可以复制自己的,也可以复制别人的公开存储库,复制自己的其实和git pull命令差不多作用,在这里演示如何下载别人的存储库下来)

    mkdir  bb

    github上随便找个别人的存储库

    复制别人存储库url

     

    使用命令: git clone 别人的url

    Git clone git@github.com:TheAlgorithms/Python.git

     

    可以看到D盘的git文件下的bb目录下,已经下载到了我在github上随便找到的存储库文件夹

     

    7、5版本回退与撤销:

    ——版本回退(类似于word文档编辑后的撤销操作,但版本回退命令是回退commit后版本库)

    首先我们对aa进行编辑,新增几行数据(aaa bbb ccc

     

    添加到缓存库,并提交至版本库

    假设现在突然发现插的三行的写错了,需要变回原样,用版本回退命令:

    Git reset --hard head^

     

    可以看到插入的三行已消失

    ——撤销修改(和版本回退有所不同,撤销修改撤销的是在缓存区的修改后文件)

    首先对aa文件编辑,插入 xxx yyy zzz三行,并添加到缓存区,但不提交

     

    这个时候缓存区的aa和版本库的aa有差别(因为我没有commit ,差了三行,我们可以用命令来查看

    Git status

    我们看下差异在哪里:

    Git diff HEAD

    我们看下差异在哪里:

    Git diff HEAD

    现在撤销掉xxx yyy zzz这三行:

    Git reset HEAD aa

    再看文件状态:git status aa

    (添加后,modifed是绿色的,现在我们已经撤销修改,modified变成了红色,表示我们的本地库aa文件已经修改,但是没有添加到缓存

    7.6分支管理

    ——查看当前分支:git branch

     

    ——创切换到一条分支:git checkout -b xiaosir

     

    ——我们在xiaosir分支下对aa文件进行修改(增加ppp qqq )

     

    ——我们在master分支下查看 aa文件,可以看到master没有刚刚添加的内容:

    Git checkout master

     

    (注:这充分解释了:分支即工作线,即如果你在一条工作线进行文档修改编辑工作,那是不会影响到另一条工作线的,其中,一般以master为主分支)

    ——把xiaosir分支的修改结果合并到master分支上;

    Git merge xiaosir (注:需要在master分支下

    ——合并分支过程产生的冲突:

    上面的步骤只是单独对一条分支进行修改并合并,但是在两条分支修改并合并的时候,会有冲突产生;

    在xiaosir分支下修改编辑:git checkout xiaosir;

     

    在xiaosir分支下添加并提交:

     

    切换至master再进行修改并添加提交:

     

    此时,我们知道,我们在xiaosir分支增加了一行文字,master分支也增加一行文字(文字内容与xiaosir分支上的不同),也就是我们在不同分支上做了不同修改,现在我们对这个操作进行合并:

    Git merge xiaosir (该命令在master分支下操作)

    现在来看合并的结果:

    可以看到,内容有合并,但是用<<<<<<<  ==========  >>>>>>>>>分隔符分开了;

    Git status 命令也告诉我们冲突了

     

    ——合并冲突修复:

    Git add aa

    Git commit -m “conflict fixed”

    ——合并冲突修复:

    Git add aa

    Git commit -m “conflict fixed”

     

    Git报错:

    1

     2、

     git  config --local  --list  查看配置是否成命令

     3、

     

     解决方案:先删除 

    1、git  remote  rm  origin

    2、再次执行添加就可以

    4、

    5、

    方法一:git 强制拉取远程代码覆盖本地 

    1、git fetch --all

    2、git reset --hard origin/master
    3、git pull
     
    方法二:退回版本
    git  reset  --hard  HEAD
     
     

  • 相关阅读:
    宏信证券手机网上开户流程
    广州证券手机网上开户流程
    国海证券手机网上开户流程
    方正证券手机网上开户流程
    民生证券手机网上开户流程
    华安证券手机网上开户流程
    【CSS】position relative 用法
    Oracle常用内置数据表查询
    【java】基础语法
    【CSS】常见问题集锦
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13936728.html
Copyright © 2011-2022 走看看