Git使用笔记

Posted 走过_冬天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git使用笔记相关的知识,希望对你有一定的参考价值。

一、Git介绍
1、什么是分布式版本控制系统?
把代码仓库完整镜像下来,这样一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次克隆操作,实际上都是一次对代码仓库的完整备份。
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。因此你就可以在同一个项目中,分别和不同工作小组的人相互协作。
2、什么是git?
Git是一款免费的,开源的,分布式版本控制系统。每一个Git工作目录是一个带有完整历史记录和版本信息的仓库,不依赖于网络和中央服务器。
补充:git与github的区别?
git是一种版本控制系统。跟svn、cvs是同级的概念。
github是一个网站,给用户提供git服务。这样你就不用自己部署git系统,直接用注册个账号,用他们提供的git服务就可以。
那是不是只有一个提供可以git服务的网站呢,答案是否定的,除了那个全世界最大的代码网站(github),还有一些小众的gitcafe、gitlab…等等,以及受国内开发者欢迎的oschinagit,当然是用这些服务都是必须注册使用的,另外再强调一件事情,越来越多的公司都开始用git进行管本控制了,公司肯定是自己搭建git服务了,最常见的是gitlab。
3、使用git有什么好处?
更顺畅的工作流程,开发过程中,可以完全离线操作。
快速,git分布式架构使得本地仓库含有所有的历史版本信息,你可以在不同的版本之间快速切换
弹性的本地分支,在svn下,你建一个分支需要把源代码复制到另外一个文件夹,而在git下,创建分支代价非常小,只需一个命令
仓库目录结构简洁,用git复制一个项目,只会在项目根目录创建一个.git的目录,而其他目录很干净
内容按元数据方式存储,所有的版本信息够位于.git目录下
完整性好更易于协助开发
用户群大,github上更是有无数个代码仓库
4、git基本工作原理?
git有三种状态:已提交(committed)已修改(modified)已暂存(staged)
已提交(committed):表示数据已经安全的保存在本地数据库中。
已修改(modified):表示修改文件,但是还没保存到数据库中。
已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
由此引入git项目的三个工作区域的概念:git仓库,工作目录以及暂存区域。

git仓库目录:git用来保存项目的元数据和对象数据库的地方。这是git中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录:对项目的某个版本独立提取出来的内容。这些从git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域:一个文件,保存下次将提交的文件列表信息,一般在git仓库目录中,有时候也被称作”索引“。
基本的git工作流程如下:
在工作目录中修改文件。
暂存文件,将文件的快照放入暂存区域。
提交更新,找到暂存区域的文件,将快照永久性保存到git仓库目录。
如果git目录中保存着的特定版本文件,就属于已提交状态。如果做了修改并已放入暂存区域,就属于已暂存状态。如果自上次取出后,做了修改但还没有放到暂存区域,就属于已修改状态。
5、git与svn的区别?(重点)
1.git是分布式版本控制系统,svn是集中式版本控制系统。即:svn版本库是集中放在中央服务器的,而干活的时候,用的都是自己电脑,所以首先要从中央服务器那里得到最新版本,然后干活,干完后,需要把自己做完的活推送到中央服务器,并且必须联网才能干活;git没有中央服务器,每个人的电脑就是一个完整的版本库,这样工作的时候不需要联网,多个人协作工作只需把各自修改的文件推送给对方,就可以互相看到对方的修改。
2.git把内容按元数据方式存储,svn按文件方式存储。即:所有的资源控制系统都是把文件的元信息隐藏一个类似.svn文件夹里;.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
3.本地增加分支:Git本地和服务器端结构都很灵活,所有版本都存储在一个目录中,你只需要进行分支的切换即可达到在某个分支工作的效果,
而SVN则完全不同,如果你需要在本地试验一些自己的代码,只能本地维护多个不同的拷贝,每个拷贝对应一个SVN服务器地址
4.分布式提交:Git 可以本地提交代码,Git有利于将一个大任务分解,进行本地的多次提交,而SVN只能在本地进行大量的一次性更改,导致将来合并到主干上造成巨大的风险
5.日志查看:Git 的代码日志是在本地的,可以随时查看,SVN的日志在服务器上的,每次查看日志需要先从服务器上下载下来。

二、安装
1. 准备win版 git : Git-2.15.1.2-64-bit.exe
2. 点击.exe 文件 默认安装 我的默认安装路径是:C:\\Program Files\\Git
3. 在搜索框中输入:git , 点击 出现的 git.bush, 如果出现bush黑框, 证明安装成功

三、创建git仓库与添加文件
1. git是一个分布式版本控制系统 所以 要设置一个user.name ,和 user.email 作为一个标识, 如果进行global 全局设置的话, 则说明你自己的电脑上的所有git仓库都能使用这个配置 :
打开 git bash,输入以下两条命令

$ git config --global user.name "yourname"
$ git config --global user.email "youremail" 

这里有几个注意事项:
(1)yourname处填写你的github用户名,youremail处填写你的github账号
(2)global前面是有两条横杠的
你可以使用下面这条命令来查看当前的所有配置

$ git config --list

如果你发现用户名或者email打错了,用上面那两条指令重新设置就可以了

  1. 创建版本库,在本地创建一个保存git项目的文件夹
$ cd D:    //切换至D盘目录
$ mkdir git_repository  //新建一个名叫git_repository的文件夹
  1. 初始化管理仓库,在你的项目文件夹下执行下面这个指令初始化git,这个指令会在当前文件夹下新建一个名叫.git的文件夹,里面放置的都是git进行版本控制的文件,这个文件夹是一个隐藏文件夹,需要点击文件夹上方的“查看”,勾选“隐藏的项目”才能看到它
$ git init
  1. 往仓库里添加要进行版本控制的文件
$ git add xxx

xxxx就是你要添加的文件,包括文件名和后缀哦,比如hello.txt,然后这样就完了吗?并不是,这条命令只是把文件扔进缓存区而已,还要执行下面这条指令提交到版本控制仓库
5. 提交到版本控制仓库

$ git commit -m "备注信息"

备注信息处换成你要写的信息即可,比如第一次提交“first commit”

四、git常用命令

  1. 查看提交日志
$ git log
  1. 查看某个文件的修改历史

在git中查看历史的命令主要是git log,要查看某个文件的修改历史可以这样:

$ git log -- begin.txt

当然,除了命令行工具您也可以使用GUI程序查看文件的历史记录:

$ gitk filename
  1. 查看历史中的文件内容

当我们使用 git log 命令找到了某次提交,并且想看看这次提交时文件的完整内容。
这时,我们需要使用 git show 命令:

$ git show xxxxx:filename

也许此时你并不是看看就算了,你想要使用这个版本的文件更新工作区中的文件。
直接从 git show 命令的输出中拷贝内容是个不错的选择。
但也可以通过组合使用不同的命令来实现:

$ git checkout <commit> --filename
$ git reset filename   

此时只有工作区被更新了(你也可以把他当做是一次回滚操作)。

  1. 比较历史中不同的文件版本

我们经常使用版本控制工具来对比提交历史中的两个文件,下面看看用 git 怎么做:

$ git diff xxxx1 xxxx2 -- filename
  1. 查看当前文件状态

仓库中的文件可能存在各式各样的状态,例如有的是新增未添加,有的是添加却未被提交,有的是已提交被修改。为了掌握这些文件的状态,我们需要借助于“git status”命令,它可以让我们时刻掌握仓库的当前状态。新增加文件后未添加到仓库,需要使用git add来添加到仓库。

$ git status

如果你修改了文件然而还没有add,可以看见”1 file modified but not commit”等字样,也就是说你修改文件的操作git都知道,
温馨提示:
即使一个文件已经被添加和提交入库,但是提交后有所修改的话,仍需要再次添加和提交(即是重复git add和git commit)。

  1. 查看修改部分

假设现在你在本地仓库里修改了文件,commit后可以查看修改了什么内容,执行下面这条指令即可。 虽然“git status”命令可以让我们了解到哪些文件做出了调整,但是并不能清楚的告诉我们这些文件做出了什么样的调整,这时候“git diff”命令就派上用场了。
该命令用于比较同一文件两次修改之间的差异,再介绍该命令之前,需要先提示一点,git diff比较的是最后一次git add的内容(old版本)和再次进行git add之前内容(new版本)的比较,如果new版本较之old版本有所改动,则可以通过git diff来查看两者差异。如果修改后又进行了git add提交,并且此后未再对该文件进行修改,则使用git diff不会输出任何内容。git diff跟文件是否被git add有关,跟文件是否被git commit没有关系。
下面就是通过git diff比较的修改前后文件的差异,其中-号代表修改前的内容(红色部分,最后一次git add时候的内容),+号代表修改后的内容(绿色部分,也就是当前内容),没有符号代表该内容未被修改(白色部分)。

$ git diff

被修改的内容会用绿色字标出来

  1. 查看缓冲区内有哪些文件
& git ls-files 
  1. 想查看更多命令的详细解释:
$ git --help

如果想详细查看diff命令,输入

$ git --help diff

接下来,你会看到自动弹出一张网页,网页上详细解释了该命令的用法。

注意到网页上的网址了吗,OK,我就不多说了,命令说明文档都在本地,进入目录就可以找到。

以上是关于Git使用笔记的主要内容,如果未能解决你的问题,请参考以下文章

git rm 和rm 的区别

在 Mongoose 中使用 populate() 返回已保存项目的列表

github基础

Redis:基于依赖项的缓存项失效?

更改 ASP.NET 缓存项过期的频率?

实现自定义 CacheDependency 以使 ASP.Net 缓存项无效