gitstats/_posts/2018-03-08-git-usage.md

4.9 KiB
Raw Permalink Blame History

layout title date author header-style tags
post Git: 教程 2018-03-08 10:32:00 Viletyy text
Git
Shell

Git

Git简介

git是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码管理私人的文档和源代码也有很多优势。

安装Git

在Linux上安装Git

sudo apt-get install git 

在MacOS上安装Git

brew install git 

在Windows上安装Git

直接在官网下载。官网下载地址

安装完毕后的配置

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

用了--global参数,表示这台机器上的所有仓库都会使用这个配置,也可以去掉该参数,对当前目录下的仓库指定用户名和邮箱。

创建版本库

版本库又叫仓库英文名是repository可以简单理解成一个目录这个目录里面的所有文件都可以被Git管理起来每个文件的修改、删除Git都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻来进行“还原”

创建版本库/仓库:

mkdir learngit 
cd learngit 
git init

其中mkdir命令用来创建目录,cd进入目录,git init来初始化仓库

版本库/仓库创建好了,目录下面会多出.git目录这个目录是Git来跟踪管理版本库的。

提交修改

添加readme.txt文件加入以下内容

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

使用git status可以让我们时刻掌握仓库的状态。

使用git diff {filename} 可以查看文件做了什么修改。

使用git add {filename} 可以将文件修改加入暂存区。

使用git commit -m #{comment} 将暂存区修改提交到版本库其中comment为提交说明

版本回退

如果你不断对文件进行修改然后不断提交修改到版本库。Git里当我们觉得文件修改到一定程度的时候可以“保存一个快照”这个快照在Git中被称为commit。一旦我们把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复。

使用git log可以查看我们提交修改的历史记录,--pretty=oneline参数可以精简输出。

我们可以在历史记录中看到一个SHA1计算出来的一个非常大的数字用十六进制表示每一个提交一个新版本Git就会把它们串成一条时间线并且赋予一个唯一的版本号。

使用git reset --hard HEAD^可以回退到上一个版本

使用git reset --hard {commit_id}可以回退到指定版本comment为版本号

使用git reflog查看你的每一次命令,可以通过该命令,获取操作前的版本号,然后回退到该版本

工作区和暂存区

工作区

就是在电脑里能看到的目录。

版本库

工作区有一个隐藏目录.git这个就是Git的版本库

Git的版本库里存了很多东西其中最重要的就是暂存区state)。还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD

701e02bf0b2d71ab51b7e2b6aa973d52.jpeg

前面讲了我们把文件往Git版本库里添加的时候是分两步执行的

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

我们修改readme.txt文件和添加LICENSE文件并且使用git add将文件添加到暂存区。暂存区的状态变成了这样。 3140921b12cc7d9a949076b2bb80d637.jpeg

然后使用git commit提交代码到版本库,版本库就成了这样。 f6ddf40f921f9953b6f84d107a11f689.jpeg

管理修改

第一次修改 -> git add -> 第二次修改 -> git commit

Git管理的是修改当使用git add命令后在工作区的第一次修改被放入暂存区准备提交但是在工作区的第二次修改并没有放入暂存区所以git commit只负责把暂存区的修改提交了也就是第一次的修改被提交了第二次的修改不会被提交。

提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别