起步-关于版本控制
在介绍Git之前我们先了解一下什么是版本控制,在pro.Git这本书中说道:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。关于版本控制,其实可以对任何类型的文件进行版本控制。接下来我将介绍一下三种版本控制系统。
本地版本控制系统
在最早的时候,一个开发者要开发一个项目,那时人们习惯于复制整个项目目录的方式来保存不同的版本,这样的好处是简单,但是坏处也是很明显的,当复制黏贴多了以后,一个开发者自己都会混淆,更不要说让别人去了解了。
集中化的版本控制系统
这个控制系统的出现已经可以解决上面所说的那个问题了,同时还让不同系统上的开发者可以协同工作。这种方式的原理是利用一个单一的集中管理的服务器,用于保存所有文件的修订版,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。但是这样同样也会有一个问题,假如一个开发者他为公司开发项目,这就意味着,他想要提交更新代码只能在公司,如果他想在家提交代码,这是不可以的,这样的话就有极大的限制了,而且一旦服务器出现故障,那么所有的代码,就有可能就没有了,这对开发者开说是一个巨大是灾难。
分布式的版本控制系统
什么是分布式的版本控制系统呢?这里简单举一个例子,当一个项目有很多开发者去完成时,每一位开大者并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,这就意味着其实每一位开发者的本地其实都是一个服务器,这样的话即使我的代码丢失了,那我同事或者远程仓库那应该会有备份我可以去他那拷贝。接下来我们要说的git就是一种分布式的版本控制系统,至于为什么使用git而不使用其他的大家可以参考:。。。
Git简单使用
安装
git在Linux上安装
sudo apt-get install git
git在windows上安装
https://git-scm.com/downloads...,然后下一步,下一步安装就可以了。安装玩以后再自己的电脑上,
注:如果上述安装方式并不能安装,你可以去Git官网上去看看,或者百度一下,就会有很多的安装教程。
设置配置信息
一般第一次安装以后就应该去配置一下信息,安装玩git以后,在电脑桌面上右击可以看到多了一个git Bash Here和git GUI Here,一般我比较常用git Bash,类似于一个命令行。
用户信息
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
注意:上面两个是例子,请不要填写一样的user.name和user.email,还有就是在打的时候注意空格。设置完信息以后可以利用git config --list查看用户的配置信息。
开始使用Git
首先右击选择git bash利用mkdir gitDemo创建一个文件夹,然后cd ./gitDemo进入当前的文件夹,利用git init初始化项目仓库,该命令将创建一个名为 .git 的子目录,注意这是一个隐藏文件,你需要先显示出电脑上的隐藏文件才能看见。在具体上git命令之前我们先理解一下git中常见的集中状态
图片描述
Working Directory:表示的是你电脑的上写代码的地方成为工作区
Staging Area:表示的是暂存区
.git(Repository):表示的是本地的仓库,也叫历史区,
至于那几个箭头分别表示的是一些git中的操作等会我们会说。
status命令
这个命令主要用于查看当前的状态,另一个功能就是有时候可以提示你下一步的操作。等会我们会使用到git status
add命令
首先我们先再我们创建的gitDemo文件夹中创建一个index.html,然后可以随便使用什么编辑器打开写上111此时这个文件存放的位置就是在工作区中,现在我们可以使用git add index.html,让git来跟踪这些文件,也可以理解为将文件从工作区提交到暂存区。这里我们用status进行查看一下
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
commit命令
在文件存放到暂存区以后我们就要将文件提交到历史区了此时我们使用的命令是git commit -m '文件的描述','文件的描述'就是指你提交的代码改了什么,或者加了什么功能等等。在使用git status进行查看
On branch master
nothing to commit, working tree clean
提示没有什么要提交的,工作区是干净的.
注意:一个文件如果在暂存区并未提交,但是此时又修改了文件,这就意味着文件有两种状态,一种在工作区,一种在暂存区这样的文件是提交不上去的需要再次使用git add <文件名>
log命令
当文件提交到呢目的仓库以后我们可以使用git log来查看提交的日志文件,注意:日志文件里面有一个commit即提交的版本号,这个以后可以用于版本回退。
例如:
commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4 (HEAD -> master)
Author: YH <m17**@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800
提交index
注:git log --oneline可以在一行查看日志
git log --graph --oneline图形化查看日志
rm 命令
如果一个文件存在暂存区了现在我们又不想提交它了,那么可以使用git rm --cached <文件名>将文件从暂存区移除。
git diff
查看工作区和暂存区的区别,例如你可以在index.html里面在加一个222,然后使用git diff,那么你就可以看见
diff --git a/index.html b/index.html
index 58c9bdf..a30a52a 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
111
+222
+222表示添加上一个222
查看工作区和当前分支仓库的区别git diff HEAD
查看暂存区和历史区的区别git diff --cached
reset版本回退
由于我们这里只有一个版本,所以我们将前面添加的222页提交到本地仓库中然后使用git log查看
commit 5161c3991d3e21777dd3ab7f2c9b853cf5397541 (HEAD -> master)
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:38:32 2017 +0800
添加222
commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800
提交index
现在我们不想要222了,那该怎么办呢?我们可以使用git reset --hard HEAD^表示回到上一个版本,git reset --hard <版本号>表示回到指定版本,版本号就是git log输出的commit
chekout命令
如果我们在本地写了代码又不想要了怎么办呢?我们可以使用git checkout命令指从暂存区取到代码放到工作区。到这里我们就应该理解了其实无论的工作区,暂存区,本地仓库其实都是有一份代码存放在那的,当我们在工作区误删,误改了什么代码其实并不要紧。
关于git分支的操作
其实在我们初始化项目的时候git就默认为我们创建了一个master分支了,在git中默认有一个头指针指向这个master, 当我们每次提交代码的时候该指针就会向前进行相应的移动。例如:我们前提交了两次代码我们使用git log --graph --oneline查看
- 5161c39 (HEAD -> master) 添加222
- a9ba8e7 提交index
*表示当前操作的分支,
51**表示原来commit的简化
HEAD:头指针此时指向master
创建分支
git barnch <分支名称>例如我们这里再创建一个dev分支git branch dev,利用git branch可以查看当前支
dev
- master
切换分支
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。