git实用知识梳理(一)最基础的知识

一般我们写代码会用到版本控制工具,那么git就是免费开源的工具之一,同时也是目前世界上最先进的分布式版本控制系统(没有之一)。因此,它的功能也是十分强大的了!当然了,精通git是很难的,大多数人也没有必要。

因此,本系列文就对常用的git知识进行梳理,保证实用!

这一篇主要内容如下:

  1. 创建版本库、添加文件到版本库、掌握仓库和文件状态
  2. 版本回退
  3. 工作区和暂存区、管理修改

Git超级实用命令

创建版本库 git init

新建一个空目录,并使用这个命令,就可以变成git可以管理的仓库,例如:

$ mkdir mygit
$ cd mygit
$ git init
Initialized empty Git repository in /Users/cynthia/mygit/.git/

建好了,然后.git目录是用来跟踪管理版本库的,不要手动修改就对了!

把文件添加到版本库 git add / git commit

假设我们新建了一个README.md文件在上面新建的mygit目录下。

$ git add README.md
$ git commit -m "readme file"

其中,git add是把文件添加到仓库,git commit则是把文件提交到仓库。 -m 后面的那段则是提交说明。

掌握仓库和文件状态 git status / git diff

git status 查看仓库当前的状态。比如你曾经添加了一些文件到仓库,但是不记得添加了哪些了,使用这个命令就可以很清楚的看到。

git diff 用git status发现有文件被修改过。但是你又不记得对文件进行了怎样的修改,就可以使用这个命令,查看区别。

$ git diff README.md

版本回退 git log / git reset / git relog

首先,使用git log查看最近提交了哪些版本。

$ git log
commit 08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master)
Author: cynthia 
Date:   Thu Jan 17 12:24:54 2019 +0800

    修改说明文件

commit eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD)
Author: cynthia 
Date:   Mon Jan 14 12:06:52 2019 +0800

    增加说明文件

当然,如果你提交过很多次的话,一屏肯定显示不全,那就按空格或者回车,继续查看余下部分。如果想退出这个界面,直接按q键就好了。

如果觉得信息太多,还可以尝试加上--pretty=oneline参数,这样就会在一行显示一个提交,清爽了很多。

$ git log --pretty=oneline
08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master) 修改说明文件
eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD) 增加说明文件

类似08fea1512...51ce19b1这样的一长串就是commit id(版本号)。

HEAD是当前版本,也就是当前的最新提交08fea1512...51ce19b1,上一个版本是HEAD,上上个版本是HEAD,往上100个版本则可以写成HEAD~100。

回退到上一个版本,使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at eec6851 增加说明文件

如果想指定回到某个版本怎么办呢?找到它的commit id,当然不需要复制整个一长串,复制前面几位就好了(也别太少,一两位的话可能会找到多个版本号,无法确定)。例如commit id是08fea15,使用命令:

$ git reset --hard 08fea15

那么当你回退到旧版本之后,还想恢复到新版本,此时用git log又查看不到版本号怎么办?此时就可以使用git reflog查看命令历史,进行找回。

$ git reflog
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to HEAD^
08fea15 HEAD@{1}: reset: moving to 08fea1512175c003
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2}: reset: moving to HEAD^

工作区和暂存区

刚学git的时候,我并不清楚有这个概念,所以经常很难理解一些操作。所以这次就带你来了解一下它们吧,可以更好地理解git哦!

工作区就是电脑里看到的目录啦。

另外,我们使用git init的时候有自动生成一个.git目录,这个是git的版本库,并不算是工作区。

版本库里存了很多东西,其中最重要的有stage和git自动创建的第一个分支master,以及指向master的指针HEAD.

stage就是暂存区。

当我们使用git add添加文件的时候,就是添加到暂存区。

使用git commit提交更改的时候,就是把暂存区的所有内容提交到当前分支。

当我们使用的时候,是不是会在git add好几次之后才会做一次git commit呀?此时,需要提交的文件,会通过git add放到暂存区,然后在git commit的时候,一次性提交暂存区的所有修改。

撤销修改 git checkout -- filename / git reset HEAD filename

正写着代码呢,小猫跑过来啪啪啪帮忙写了几爪子,然后顺手还帮你保存了。你很感激猫主子的“好意”,不过你还是想恢复到之前的模样。

怎么办呢?用眼睛一处处检查,然后改回来么?那万一整个文件都给你删了呢?

不用慌,此时使用git checkout -- filename撤销修改就好啦!之后,这个文件就会回到最近一次git commit或git add时的状态。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

那么,万一你离开电脑的时候,小猫帮你写了一堆代码,你回来之后直接使用git add添加到了暂存区怎么办?

使用git reset HEAD filename就可以把暂存区的修改撤销掉,重新放回工作区
了!

假如你不仅add了,还commit了怎么办?参考上面版本回退部分的相关命令,就好了。

删除文件 git rm

git实用知识梳理(二)分支管理

你可能感兴趣的:(git实用知识梳理(一)最基础的知识)