git笔记整理

 

  1. 什么是git:

      它就是一个代码管理工具,同时也一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。经常用的代码管理工具还有SVN,CVS,Git, Subversion 等等。

互联网公司使用代码管理工具了解到的有: gitflow,gitlabel等等;

  1. CVS:

开启版本控制之门,1990年诞生,“远古时代”的主流源代码管理工具;

  1. VSS

微软的集中式版本控制工具,集成在Visual Studio中;

  1. Subversion

            是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion;

  1. 集中式和分布式控制系统

      a. 集中式版本控制系统:

  1. 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
  2. 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟;
  3. 集中式如下图:

      b. 分布式版本控制系统:

  1. 分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
  1. 分布式和集中式版本控制系统相比:

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

 

  1. 分布式如下图:

 

  1. 为什么使用git:

      免费,开源,方便多人协同开发,方便版本控制;

  1. Git的特点:

      a.每个版本产生直接记录快照(版本的迭代记录清晰);

b.所有的操作都是在本地完成;

c.保证数据的完整性,例如:电脑坏了,没有网络等等;

d.基于Linux 内核开发,可以使用liunx命令;

 

 

 

 

  1. Git和SVN对比:

 

定义

优点

缺点

区别

Git

分布式代码管理系统(核心区别)

1.适合分布式开发,强调个体。

2.公共服务器压力和数据量都不会太大。

3.速度快、灵活。

4. 内容按元数据方式存储

5.离线工作

6.Git适用于参与开源项目的开发者

7. 部署方便。基本上下个命令就可以用

1. 不符合常规思维

2. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。

2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。

3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。

4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。

5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

SVN

集中式代码管理系统(核心区别)

  1. 按文件方式储存
  2. 采用集中式,易于管理,保证安全性
  3. 管理方便,逻辑明确,理念符合常规思维;
  4. 适合人数不多的项目开发
  5. 支持二进制文件,更容易处理大文件
  1. 服务器压力太大,数据库容量暴增;
  2. 必须连接在服务器上
  3. 不适合开源开发
  1. 工作区和暂存区和仓库区:
  1. 工作区:对于添加、修改、删除文件的操作,都发生在工作区中;
  2. 暂存区:暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分;
  3. 仓库区:

           仓库区表示个人开发的一个小阶段的完成;

           仓库区中记录的各版本是可以查看并回退的,但是在暂存区的版本一旦提交就再也没有了;

  1. Git操作流程:

      Git服务器(commit) --> 本地仓库(push) --> 客户端 --> (pull)本地仓库 --> Git服务器

  1. Git提交方式:

      一种在终端命令提交,另外一种是开发环境提交,例如:pycharm

  1. 下载安装:
  1. 下载地址:https://git-scm.com/download/win 输入之后直接下载最新版本(windows)

  1. 安装--选择安装路径—next—finish

  1. 在终端中设置用户名和邮箱:

                       全局配置:

                            git config --global user.name "quanquan"

                            git config --global user.email "951078155@qq.com"

  1. 查看是否设置成功:

      git config user.name

      git config user.emai

  1. 本地创建一个文件夹/库:

                       mkdir library—文件名

                       cd library

  1. 初始化:git init
  2. 添加文件:git add test.txt/文件名
  3. 提交:git commit -m"wrote a test file"
  4. 查看状态: git status
  5. 查看修改:git diff---在没有提交的情况下,查看修改 ,提交之后什么也不显示

  1. 提交之后查看修改记录:git log—会显示提交信息的描述,提交时间,提交人的具体信息。Commit 后面是提交的版本号,又叫提交记录ID

  1. 回退:git reset –hard HEAD^ 回退的是第一个版本,回退之后使用git log命令查看会发现会减少一个一个版本。
  1. 回退之后想在回退到之前的版本:

git reset --hard 7a08c5c/这个版本号,前7位就行

git log 查看,会发现以及回来了

  1. 查看之前打印的版本号:

git reflog

  • 撤销修改(如果我们在提交代码前发现有错误,但是我们执行了git add命令,把修改的文件添加到了暂存区):

第一使用:git checkout -- 文件名

第二使用:我们也可以使用命令git reset HEAD file把暂存区的修改撤掉(unstage),重新放回工作区。例如:git reset HEAD test.tx

  1. 创建远程仓库(githup):
  1. 首先创建公钥和私钥,对传入的文件进行加密,查看当前文件下是否有.ssh目录,如果没有创建ssh-keygen -t rsa -C "这里随意填",创建后会产生id_rsa私钥,id_rsa.pub公钥
  2. 在githup注册之后--点击new repository创建库--settings—Deploy keys—在key里面输入本地的公钥,就可以了
  3. 根据流程就可以推送文件/代码了
  1. Pycharm使用git:

      第一步,你已经在githup/gitee等等,创建了远程仓库,找到filr—settings--version control—选githup/git—auth typey选择password—输入远程仓库的用户名和密码—test测试,

      第二步,点击git 查看是否选择git执行的路径是否存在,存在点击ok

      第三步:点击顶部的VCS—import into version control—share project on githup – 填写运程的仓库名(新建) – share—就可以了

  1. 产生代码冲突的原因:
  1. 多个人同时操作了同一个文件;
  2. 一个人一直写不提交;
  3. 修改之前不更新最新代码;
  4. 擅自修改同事代码;
  1. 减少冲突的操作方式:
  1. 养成良好的操作习惯,先pull在修改,修改完立即commit和push 代码写一点就提交(先更新在提交) 各自开发各自的模块;
  2. 如果要修改公共文件,先沟通一下,一定要先确认有没有人正在修改

      下班前一定要提交代码,上班第一件事拉取最新代码;

  1. 一定不要擅自修改同事的代码;
  1. 标签:

      如果一个阶段完成了,要发布第一个版本了,那么可以打上标签。

      使用:git tag -a v1.0 ;

      使用git push origin v1.0 推送到远程;

      查看标签:git log --oneline --decorate –graph;

            作用:记录版本,备份大版本代码;

  1. 分支:master主分支,dev分支
  1. 作用:用于区分生产环境代码以及开发环境代码;包括研究新的功能或者攻关难题;解决线上bug;
  2. 特点:

            项目开发中公用分支包括master、dev分支,master是默认分支,用于发布,当需要发布时将dev分支合并到master分支。

            分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支

  1. 发展历史:

      创始人:Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰。

      很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

      你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

      安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

      Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

 

                                                                                         ---圈圈著作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值