分布式版本控制系统Git(一):Git安装配置、基本命令

前言

扯淡

新入公司,发现公司用的是Git进行代码管理,以前所呆的公司都是用的SVN,对于Git也不是完全不了解,之前多多少少了解过,但是毕竟没有用做实际开发中,所以理解的也不深入,命令也没有去学,只弄了一下eclipse中git的team管理操作,也没有自己总结过,如今再次捡起来,所以重新总结一下,方便自己以后忘记了再来回顾吧。

言归正传

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

首先是Git这个东西,不管你是百度还是google,基本所有人都会说Git比SVN强大,比SVN好用,原因在哪里了,Git是分布式版本控制系统,SVN是集中式版本控制系统,最能体现出区别的是,假如你公司SVN服务器挂掉了,那么你就可以放假了。


SVN与Git的优缺点

  • SVN
    • 优点
      • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器
    • 缺点
      • 必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了
  • Git
    • 优点
      • 适合分布式开发,强调个体。
      • 公共服务器压力和数据量都不会太大。
      • 速度快、灵活。
      • 任意两个开发者之间可以很容易的解决冲突。
      • 离线工作。
    • 缺点
      • 资料少(起码中文资料很少)。
      • 学习周期相对而言比较长。
      • 不符合常规思维。
      • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

下载+安装+配置

下载

安装

前面几步就省略了,重点是几个选项界面:一般情况下,这个两个界面都选第一个。
这里写图片描述这里写图片描述

在“Configuring the line ending conversions”选项中,
第一个选项:如果是跨平台项目,在windows系统安装,选择;
第二个选项:如果是跨平台项目,在Unix系统安装,选择;
第三个选项:非跨平台项目,选择。

配置

安装完成之后,就需要为你的Git配置账户了,Git是以邮箱和用户名这个组合为一个标识的。打开Git Bash
这里写图片描述

    git config --global user.name 'zhangsan' //配置全局用户名
    git config --global user.email 'zhangsan@126.com' //配置全局邮箱

这里配置的是全局的用户名和邮箱,也可以为每一个项目配置一个,这里就不演示了。

C:\Users\Administrator.gitconfig中可以看到配置的用户信息。

这里写图片描述

Git实战操作

Tip:在Git Bash中可以使用linux命令来操作windows,比如用touch创建文件,vi编辑文件等等。

1. 理解工作区+版本库+暂存区

  • 工作区(Working Directory):就是你电脑本地硬盘目录
  • 版本库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库
  • 暂存区(stage):一般存放在”git目录”下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
    这里写图片描述
    Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用“git add”把文件纳入Git管理,实际是把本地文件修改添加到暂存区;
第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支 。

2. 创建版本库

  1. 首先进入到需要建立版本的路径,也就是项目路径。这里演示地址为:D:\develop\workspace\Test
  2. 右键选择Git Bash,然后输入命令
    git init    // 初始化/创建版本库

这里写图片描述

这里可以发现,创建版本库成功,路径下面多了一个.git的文件夹,这个就是git的本地版本库,并且自动为我们创建了master分支,并且当前已经关联上了master分支。

3. 查看文件状态+提交修改

3.1 查看文件状态

    git status                   // 查看当前路径下所有文件的状态
    git status a.txt             // 查看当前路径下a.txt文件的状态

这里写图片描述

  1. 首先创建了一个名字叫a.txt的文件。
  2. 使用git status查看a.txt文件的状态。

可以看到,On branch master 在master分支上,untracked(未被git跟踪的文件),请使用git add命令来添加将要提交的文件,注意到,这里的文件名字显示为红色,表示未被git管理的文件。

3.2 加入到暂存区

    git add a.txt                    // 将a.txt加入到暂存区

这里写图片描述


  1. 将a.txt加入到暂存区
  2. 手动新建了一个b.txt
  3. 使用git status命令查看文件状态

由于使用的是git status命令,是查看该路径所有的文件状态,所以b.txt也是untracked file,没被git管理跟踪,所以是红色的,另外刚刚将a.txt加入到了暂存区,可以看到a.txt是绿色的,当然new file表示是新文件。

3.3 提交

    git commit -m 'new file to local' a.txt   // -m 'xxx' 是提交的注释,必须要,否则提交不了。
  • 不加注释的情况,这里省略了点击之后很长的提示信息。

    这里写图片描述

  • 加注释

    这里写图片描述

    1. 使用命令提交a.txt
    2. 查看a.txt文件的状态

    这里可以看到,提交成功,a.txt文件的状态为
    nothing to commit,working directory clean(没有什么可以提交,工作区非常干净)

3.4 修改文件提交(之前是新建文件提交过程,命令一样,只是提示不同)

这里写图片描述

这里写图片描述

我这里修改a.txt,添加一段话111111,查看状态,有新提示,因为这个文件已经处于git管理跟踪了,提示使用checkout来丢弃之前的修改操作。(之后演示),这里不讨论这个,继续添加到暂存区

这里写图片描述

这里同样是显示绿色,当然不再是显示new file ,而是modified,继续提交

这里写图片描述

4. 日志+版本号+对比不同

4.1 查看日志

    git log                      // 查看当前路径下所有文件的版本日志信息
    git log a.txt                // 查看当前路径下a.txt的版本日志信息

这里写图片描述

显示作者,时间,注释

    git log --pretty=oneline a.txt           // 查看a.txt的日志信息,以一行一行显示

这里写图片描述

4.2 版本号信息

    git reflog a.txt

这里写图片描述

4.3 版本回退、穿梭

    git reset --hard HEAD^                    // 回退上一个版本
    git reset --hard HEAD~40                  // 回退40个版本以前
    git reset --hard 版本号(如上面的fbf510a)    // 穿梭到fbf510a那个版本

这里写图片描述

成功回退到前一个版本!

4.4 对比文件差异/不同

    git diff a.txt

这里写图片描述

注意这里是修改a.txt之后没有add到暂存区,然后使用diff对比工作区与本地版本库

5. 撤销文件修改

5.1 撤销未加入暂存区的文件修改(也就是未add的文件)

    git checkout -- a.txt

5.2 撤销已加入暂存区但未提交的文件修改(也就是已add未commit的文件)

    git reset HEAD a.txt              // 先回到之前版本库a.txt的代码
    git checkout -- a.txt             // 再checkout a.txt

5.3 撤销已加入暂存区已提交的文件修改(也就是已add已commit的文件)

    git reset –hard HEAD^            // 整体回退到之前版本

6. 删除文件

    git rm -f a.txt                              // 删除a.txt
    git commit -m 'delete a.txt' a.txt           // 提交操作

使用rm删除之后,使用git status命令,可以看到a.txt文件为绿色,需要提交才能生效

7. 分支操作

7.1 创建分支

    git branch 分支名字 (如dev)    // 创建(dev)分支

7.2 查看分支

    git branch

7.3 切换分支

    git checkout 分支名字              // 切换到xx分支

这里写图片描述

可以看到最后/D/develop/….(dev)

这里写图片描述

另外值得注意的一点是,创建分支的时候,拷贝了一份master的东西到新分支中。

7.4 分支合并

    git merge 
情况1:(无冲突)

现在我修改新分支dev上的a.txt,添加dev update

这里写图片描述

然后回到主分支,主分支我并没有进行修改,只有新分支修改了,那么进行合并

这里写图片描述

显然是没有冲突的,master分支里的a.txt进行了更新

情况2:有冲突

这里写图片描述

这里写图片描述

现在可以看到,分别将master的分支与dev分支修改成如上所示,那么进行merge的时候,会提示如下,而且没有解决冲突之前不能进行其他操作,比如切换分支等等。

这里写图片描述

使用vi编辑器去编辑a.txt

这里写图片描述

修改,删除<<<< HEAD >>>dev 什么的之后,保存,提交之后MERGING状态消失,冲突解决。

这里写图片描述

7.5 删除分支

    git branch -d dev

小结一下:只能说,总结这个东西确实有点累,主要是CSDN不支持直接粘贴复制图片,每个图片要一个个上传,确实有点蛋疼,不过弄了这么久,终于是搞好了,不过还是有很多地方不足,之后总结下关联github之类的内容,另外把常见基本命令专门开一篇出来,如果要查命令的话,看那篇就够了,这个只是入门级的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值