Git是世界上最先进的分布式版本控制系统,克隆一个项目的速度非常快
每个开发都可以从master上克隆一个本地版本库,就算没有网络,也可以提交代码到本地仓库,查看log 创建项目分支等等
每个版本库都可以创建无限个分支,分支是个完整的目录,且这个目录拥有完整的实际文件
一、安装
在网上搜索一下安装教程就可以了,这里就不介绍了
安装完成后,再开始菜单里找到“Git”->“Git Bash”,弹一个类似命令行窗口的东西,就说明Git安装成功
接着需要设置一下机器信息,这台机器上的所有Git仓库都会使用这个配置
$ git config --global user.name "username"
$ git config --global user.email "email@example.com"
二、创建版本库
$ mkdir mymenu
$ cd mymenu
$ pwd
/Users/hxk/mymenu
pwd命令显示当前目录
2、初始化仓库
git init 命令把这个目录变成git可以管理的仓库
$ git init
Initialized empty Git repository in /Users/hxk/mymenu/.git/
初始化一个空的仓库,目录下多了.git目录
版本控制系统只能跟踪文本文件的改动,且编码方式是utf-8
三、文件的基本操作
Hello World
$ git add test.txt
2、提交文件到仓库
-m后面输入的是本次提交的说明,提交成功后会显示:
1 file changed:1个文件被改动(我们新添加的readme.txt文件);
2 insertions:插入了两行内容(readme.txt有两行内容)。
为什么Git添加文件需要 add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
如果提交的备注写错了,可以用以下命令修改刚刚提交的备注
$ git commit --amend
Hello World ABC
提交
$ git add test.txt
$ git commit -m "append ABC"
4.查看历史记录
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: hxk <hxk@gmail.com>
Date: Fri July 20 21:06:15 2018 +0800
append ABC
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: hxk <hxk@gmail.com>
Date: Fri July 20 20:59:18 2018 +0800
a new file
git log显示最近 到最远的提交日志,我们可以看到两次提交,最后一次是append ABC
gie的版本号是用SHA1计算出来的一个16进制数
如果嫌输出信息太多,可以加上--pretty=oneline
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append ABC
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 a new file
5.回退 历史版本
$ git reset
首先,Git必须知道 当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交
1094adb...,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写
100个‘比较容易数不过来,所以写成HEAD 100’。
回退上一版本
$ git reset --hard HEAD^
HEAD is Now at eaadf4e a new file
这时再次查看历史版本
$ git log
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: hxk <hxk@gmail.com>
Date: Fri July 20 20:59:18 2018 +0800
a new file
之前哪个版本已经看不到了,这时如果想回到之前那个版本,需要知道版本号,git
内部有个指向当前版本的head指针,将指针从当前版本指回去,所以 git回退版本特别快
$ git reset --hard 1094adb7
6.查看历史命令
要是不记得刚才的版本号,可以使用以下命令:
$ git reflog
7.查看状态
$ git status
四、工作区和暂存区
Git和SVN的一个不同之处就是有暂存区的概念
名词解释:
工作区(Working Diectory):指的是在电脑里能看到的目录,比如mymenu文件就是一个工作区
版本库(Repository):Git目录,Git的版本库里存了很多东西,其中最重要的就是称为
stage(或者叫index)的暂存区,还有Git为我们自动创建的第一分支master,以及指向master的
一个指针叫 HEAD。
git commit是把暂存区的所有内容提交到当前分支