git 学习笔记一

1.git的 介绍 分布式和 集中式  

  集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

  那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

  在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

2.git的安装

  正常安装好git之后可以$git --version 查看 git的版本号是否安装成功

  

  安装完成之后 进行最后一步的设置

  $ git config --global user.name "Your Name"
   $ git config --global user.email "email@example.com"
  因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?
  这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
小技巧
 $ git clear 清除一下当前的界面
 
查看你设置的 用户名和邮箱
 $ git config user.name
 $ git config user.email

  返回上一级目录 cd ..

  ls 可以看到当前目录下的所有文件 文件夹在前 文本在后

3. Create Our First Repository

  A) 找一个合适的地方创建一个空目录

  pwd 命令用于显示当前目录(在window下面 确保不能出现中文 否则就会出现呵呵的问题)

  B) 通过 git init 把这个目录变成Git可以git可以管理的仓库

  瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。(如果你没有看到 .git目录 可以直接使用 ls -ah命令就能看见)

  现在我们编写一个 first.txt文件 (必须要放在git 仓库下)

  第一步 用 git add 告诉Git 把文件添加到仓库:

  $ git add readme.txt

  第二步 git commit 告诉 Git 把文件提交到仓库

  $ git commit -m "里面是本次提交的说明 可以输入任意内容"

  commit 可以一次提交很多文件 你可以多次add不同的文件。

  

  接下来 如果我们要修改first.txt文件 。 改完之后 可以$ git status 查看结果。

  

  上面的命令告诉我们  first.txt被修改了 但是没有准备提交的修改。如果我们不清楚修改了readme.txt 使用$ git diff这个命令查看修改。

  git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了。之后再执行 提交修改和提交新文件是一样的两步,第一步是git add:同样没有任何输出。在执行第二步git commit之前,我们再运行git status看看当前仓库的状态:

  git status 告诉我们 将要被提交包括first.txt 。最后在查看。记住 时常查看 git status的状态。

  如果在团队协作的时候 你要查看你自己或者别人提交的日志可以直接 使用$ git log --author="shiyao" 就可以看到我执行的操作。

4.版本回退

  像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

  $ git log 命名显示最近到最远的提交日志 我们可以看到所有提交。 如果闲东西太多 可以加上 --petty=oneline参数

接下来 怎么会退到上一版本呢?

  A)首先 要让Git知道当前版本是哪个版本 在Git中 用HEAD表示当前版本 上一版本就是HEAD^ 上上一版本就是HEAD^^ 如果100写100个^ 写不过来 所以写成HEAD~100

    $ git reset --hard HEAD^ 

    查看里面的内容使用 $ cat first.txt;

    此时我们可以使用$ git log 查看版本库的状态。

    在没有关闭命令行的情况下 你还可以回到上面一个版本。

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

  

原文地址:https://www.cnblogs.com/syomm/p/5650748.html