美文网首页
GIT--版本控制系统

GIT--版本控制系统

作者: Bigbang_boy | 来源:发表于2017-11-26 15:41 被阅读0次

一.简介

我们在学习一样知识的时候,总会问到:

  • 1 . 为什么要学?
  • 2 . 学了有什么好处?
  • 3 . 其他知识能否代替这个?

我们会发现这些问题在没有大量相关知识的时候是不能立即解决的,所以我们在这方面知识的逐渐掌握中为我们的学习寻找方向。

前几天在修改别人的GitHub开源项目的时候,总会遇到一个问题:我copy代码A,改成代码B,发现错误,想要改回A,如果文本没有关闭还好,可以直接撤回,可是“撤回”也是有一定的局限性,万一文本关闭了,又得去做那些重复的事情;亦或者建立一大堆副本,



到最后却把自己搞混了;此时若你的项目同伴也在和你一起做项目,你就需要把项目打包给他,而两人修改期间需要大量的版本交换才知彼此进度和修改内容,实在麻烦。

如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同伴协作编辑,这样就不用管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

版本控制系统(Version Control System)应此而生。其实早在上世纪80年代已经出现了,这里有详细历史发展(点我跳转)。我们的文本保存也算是一种版本控制系统,不过能撤回的范围很有限。

版本控制系统分为两类,集中式(有CVS、SVN)和分布式(Git),集中式会有一个大大的主机来储存你的代码,每次提交和更改的日志都会直接输送至主机上;分布式则在电脑储存日志和版本,必要的时候可以把代码托管到服务器上,但并非是完全托管,只是方便你和你的合作人交换修改日志,就算不托管在网上,你和你的合作人也可同时管理项目,只是相对麻烦而已。这里可以看到集中式比较依赖主机的性能和维护,在网络不好的时候上传一个项目相当耗时间。

对于经常修改代码的程序员来说,Git的学习也应是一门必修课。

二. 安装与使用

Windows下要使用很多Linux/Unix的工具时,需要很多环境的支持,这里已经有人整合成一个exe,可直接下载(点我跳转)
安装过程会弹出比较多选项,可直接默认,我们入门只需要使用基础功能即可。安装完毕打开即可。

主界面
创建

Git的所有操作都需要命令来支持。
在使用Git之前,首要任务是做一些简单的配置,最重要的是用户名及邮箱,打开终端,执行以下命令。

$ git config --global user.name "My Name" 
$ git config --global user.email myEmail@example.com

这样Git就知道谁会去操作这个版本库了。

然后我们需要在本地创建一个版本库:

//我们需要把项目放进自己喜欢的路径下
$ mkdir 目录名            //mkdir用来创建一个目录,Git默认的根目录是c/Users/Administrator
$ cd 目录名              //转至该目录
$ pwd              //显示当前目录          

建好目录后,通过git init变成Git的本地仓库


.git是版本仓库,千万不要去改动里边的文件,可能会破坏一些功能比如版本倒退。

添加文件到版本库

在介绍如何添加文件之前,需要大家去理解一些概念:


  • Workspace:你的工作目录。真正持有你的文件的地方。
  • Index:暂存区(stage, index),临时保存你准备提交修改文件的地方,是 Git 最重要的概念之一,可以理解成一个"提交任务"。所有文件提交后会先放在stage内,通过status查看改变的内容,再从stage上传到Repository(存库区),完成一个版本的完整添加。
  • Repository: 版本库或者是仓库,英文名Repository,其实啊说白了就是一个目录而且,这个目录中的所以文件都被git管理而且,不管你做什么操作都会被记录,包括:增加、删除、修改文件等,都会被记录下来,以便后来跟踪与修改相关记录,甚至被还原。
  • Remote:远程托管你的项目,使你的同伴和你一起共享进度。

Git提交一个文件只要两步:
1 .add
2 .commit
先创建一个文本文件,任意编程格式都行,放入你刚刚创建的Git仓库。注意,Git只能识别在它管理的Git目录下的.txt和所有的程序代码,图片和视频格式只能识别修改前后的储存大小。
内容随意。

使用命令把文件添加至stage(缓存区)中:

$ git add 98k.txt

如图,成功加入暂存区后是没有任何提示,所谓没有消息就是好消息。add指令可以多个添加文件到暂存区。

提交文件到版本库,生成版本号:

$ git commit -m "Add new weapon"

commit后面是本次提交的说明,能更轻松让你和你的伙伴知道到底修改了什么,这是一个好习惯。
这样,完成了一个文件的提交。

status状态的说明

可以列出当前目录所有还没有被git(git add)管理的文件和被git管理且被修改但还未提交(git commit)的文件.。

我们先修改一下文本:



此时使用命令:

$ git status

可至少知道你修改了文件,但不知道修改了什么

Changes not staged for commit

表示文件未在缓存区,等待上传中...这时候add文件,再次使用git status


预备上传中...
commit后在使用status就不会出现新的状态了。这时候表示版本上传完成,工作区清空(working tree clean)。
diff指令

diff(different)用来对比某两次的修改,有以下作用:

  • 查看尚未暂存的文件更新了哪些部分,不加参数直接输入
    git diff
    此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
    也就是修改之后还没有暂存起来的变化内容。

  • 查看已经暂存起来的文件(staged)和上次提交时的快照之间(Repository)的差异
    git diff --cached
    git diff --staged
    显示的是下一次commit时会提交到Repository的内容(不带-a情况下)

  • 显示工作版本(Working tree)和Repository的差别
    git diff HEAD

  • 直接将两个分支上最新的提交做diff
    git diff topic master 或 git diff topic..master

  • 输出自topic和master分别开发以来,master分支上的changed。
    git diff topic...master

diff指令是很常用的指令,

它能告诉你哪个地方做了改动,如图红色字表示被删减的部分



再如绿色的增加部分。注意,我之前尚未提交(git add)我删减那部分,所以它显示了我上次已经修改但是未提交(git add)到缓存区的修改信息。如上文所述,diff有多个对象对比的指令,需要熟练使用。

对Git的介绍暂时到这里,下次讲如何使用版本返回和“时光穿梭”,本文会在一周内进行补充。

本文部分内容参考以下链接:
廖雪峰--Git教程
wish123--git diff命令详解

--------------------------11.27-UPDATA--------------------------
官网给出的很清晰的图片教程,很有用,建议去看看(点我跳转)

相关文章

  • GIT--版本控制系统

    一.简介 我们在学习一样知识的时候,总会问到: 1 . 为什么要学? 2 . 学了有什么好处? 3 . 其他知识能...

  • GIT--版本控制系统(二)

    上一节简单介绍了Git入门和部分指令的使用,你已学会了: 简单Git的储存原理 上传文件到版本库 文件状态,工作区...

  • git的及基本使用

    git 版本控制系统(VCS) 本地式版本控制系统 集中式版本控制系统 SVN 分布式版本控制系统 Git g...

  • GitHub使用 (不定期更新)

    版本控制 本地版本控制系统 集中式版本控制系统 ( SVN) : 必须要联网 分布式版本控制系统 (Git) G...

  • Git复习

    版本控制 版本控制的意义在于记录和备份. 版本控制系统分类: 本地版本控制系统:无法协同开发 集中化版本控制系统:...

  • Git--版本控制(五)添加远程库

    Git--版本控制(引用)廖雪峰老师 我们如何创建自己的版本库并使用呢? Github需要代理才能访问? 我们可以...

  • Git相关内容

    1、版本控制系统 (1)本地版本控制系统; (2)集中化的版本控制系统(客户端是最新的版本) eg:SVN:不支持...

  • 为什么要使用Git

    我们先做个对比就是“集中化版本控制系统”和“分布式版本控制系统”。 集中化版本控制系统 (Centralized ...

  • 版本控制系统以及Git介绍

    版本控制系统(Version Control System - VCS) 版本控制系统(VCS)最基本的功能是版本...

  • Git整理

    1. 版本控制 CVS及SVN都是集中式的版本控制系统而Git是分布式版本控制系统。 集中式版本控制系统,版本库是...

网友评论

      本文标题:GIT--版本控制系统

      本文链接:https://www.haomeiwen.com/subject/vndkbxtx.html