Git简介
是什么:
Git是目前世界上最先进的分布式版本控制系统,通俗的说就是分布式管理代码的软件工具。它是Linus公司用C语言两周完成的。
集中式版本控制系统和分布式版本控制系统的比较:
集中式特点:版本库必须集中存放在中央服务器;必须联网工作;速度慢;安全性低;
分布式特点:每台电脑都是一个版本库;无需联网工作;速度快;安全性高;强大的分支管理。
Git安装
Linux平台:
如果是Debian或Ubuntu Linux,通过一条sudo apt-get install git就可以直接完成Git的安装;老一点的Debian或Ubuntu Linux,要把命令改为sudo apt-get install git-core;
如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。
Windows平台:
在Windows上使用Git,可以从Git官网(https://git-scm.com)直接下载与电脑相匹配的软件并安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,进行设置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建版本库(Windows平台):
创建一个空白目录,尽量不使用中文;
进入此目录后,用git init 命令把这个目录变成git管理的仓库;
这时会发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然就把Git仓库给破坏了;
编辑文件时,推荐使用notepad++,尽量不使用Windows自带的记事本(在工作目录中添加和修改文件);
把需要版本管理的文件放入暂存区域,用 git add 文件名;
把暂存区域的文件提交到git仓库,用 git commit -m “注释”;
时光穿梭
版本回退:
git log或者git log --pretty=oneline命令显示从最近到最远的提交日志(查看历史版本);
git reset --hard HEAD^ 回退到上一个版本(HEAD表示当前版本,^有几个就回退几个);
git reset --hard HEAD^^ 回退到上上个版本;
git reset --hard 版本号 回退到该版本号(版本号可以写前几位);
用git reflog查看命令历史;
三区域:
工作区:电脑里能看到的目录;
暂存区:.git(git的版本库)里存了最重要的就是称为stage(或者叫index)的暂存区;
分支区(git仓库):.git(git的版本库)里存了Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD;
git add把文件添加进去,只负责把文件修改添加到暂存区;
git commit提交更改,只负责把暂存区的所有内容提交到当前分支。
Git管理的实质是修改,而不是文件。
Git status 查看状态
撤销修改:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
命令git checkout -- file意思就是,把 file文件在工作区的修改全部撤销,这里有两种情况:
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
删除文件:
在工作区中:你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了;然后你确实要删除版本库中的内容,那就用命令git rm或者git add 命令删掉,并且git commit。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。