Git学习手册1

1.Git的诞生:

Git是什么?

Git是目前世界上最先进的分布式版本控制系统。
工作原理

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

引自Git官网
Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast
performance. It outclasses SCM tools like Subversion, CVS, Perforce,
and ClearCase with features like cheap local branching, convenient
staging areas, and multiple workflows.

如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

2.分布式系统和集中式系统:

集中式:

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

分布式:

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

总结:

Git:最快、最简单也最流行(目前来说)。

3.Git安装:

官网:https://git-scm.com/downloads。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
在这里插入图片描述
安装完成后,还需要最后一步设置,在命令行输入:

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

●注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

4.创建版本库:

版本库又名仓库,英文名repository,怎么理解?即一个目录,在这个目录里面的所有文件都在被Git管理,每个文件的修改、删除,Git都能跟踪,以便时时刻刻都可以追踪历史,或者随时“还原”。

1.选择一个合适的地方,创建一个新的空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

●pwd命令用于显示当前目录。在此电脑上,这个仓库位于/Users/michael/learngit。
若为Windows系统,为了避免出现各种问题,请确保目录名(包括父目录)不包含中文。

2.通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

Git仓库就建好了,并且是一个空的仓库(empty Git repository),当前目录下便多了一个.git的目录,这个目录是用来跟踪管理版本库的,没事不要手动修改。
如果没有看到,可以使用ls -ah命令就可以看见。

注:本人已经事先创建好了仓库,所以第一步不需要再重做。

5.将文件加入版本库:

所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件,网页,以及所有的程序代码等等,Git也不例外。而图片这些二进制文件,虽然可以管理,但是无法跟踪文件内部的变化,比如只知道图片从100KB变到了120KB,但是具体改动了什么,版本系统也不知道。
并且Microsoft的Word也是二进制格式,因此,也无法跟踪。
使用Windows的同学请注意:
不要使用系统自带的记事本编辑文本。因为此记事本的开发团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!
记得把Notepad++的默认编码设置为UTF-8 without BOM即可。
现在我们编写一个readme.txt文件

Git is a version control system.
Git is free software.

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。编辑完成之后按Ctrl+Z退出(不建议用Ctrl+Z),专业使用为:
如果是输出状态,首先Esc退出输入状态,然后Shift+;,再输入q!或wq!(不保存改动,wq!是保存文件的写入修改)退出
在这里插入图片描述

1.用命令git add 告诉Git,把文件添加到仓库:
$ git add readme.txt

执行上面的命令没有任何显示就对了,要知道,Unix的哲学是“没有消息就是好消息”,说明添加成功。

2.用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
[master (root-commit) c8bfb57] wrote a new readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

简单解释一下git commit命令, -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里面方便的找到改动记录。也可以不输入 -m “XXX”,但是不建议这么做,毕竟输入说明是让自己也知道,让别人也明白。
成功之后会告诉你,1 file changed:1个文件被改动(即我们新添加的readme.txt), 2 insertions(+):插入了两行内容(readme.txt有两行内容)。
为什么Git添加文件需要两步?
因为commit一次可以提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files"

小结:
初始化一个Git仓库,使用Git init命令。
添加文件到Git仓库,使用Git add 以及 git commit -m 来完成。

6.文件的修改:

我们继续修改之前写的readme.txt文件。首先使用cd learngit进入learngit文件夹,然后,输入vi readme.txt,改成如下内容:

Git is a distributed version control system.
Git is free software.

现在运行git status命令查看结果:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)


    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status命令可以让我们时刻掌握仓库当前的状态,上面的输出告诉我们,readme.txt被修改过,但是还没有准备提交的修改。
孙然Git告诉我们readme.txt被修改了,但如果能看看修改了什么,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

在这里插入图片描述
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个distributed单词。
知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了。
提交修改和提交新文件是一样的两步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值