Git完整教程1--本地仓库的命令使用

该本章是参考廖雪峰Git教程的一篇笔记文章,可以自行搜索查阅


前言

Git是用C语言开发的目前世界上最先进的分布式版本控制系统,说到这个就浅谈一下什么是版本控制系统以及分布式的含义。

举个例子谈版本控制系统:
你修改一个word文档,你提交给了别人,然后别人又发过来让你重新修改,然后你第二次修改了又提交上去,别人说不行不行还是第一次的内容,然后你不得不又删除,接着那个人看不惯你,就让你重复修改提交,这时候你也分不清他到底要哪个版本,你就不爽了破口大骂,然后你就丢饭碗了hhhh,这时候就需要咱们的分布式版本控制系统咯,含义就是它可以记录你每次的提交保存,并且记录相应变化并可来回切换。

第二个我们就谈一下分布式与集中式的区别:

集中式版本控制系统最大的缺点就是需要联网才能工作,版本库存放在CPU中,你可以把这个看作一个图书馆,你想要借书修改,就必须先从图书馆借书了之后再改动了放回去,而且一旦CPU里面内容不在了,那只能功亏一篑了。
分布式版本控制系统安全性更高,每个人电脑里可以克隆一个完整版本库,一台电脑出问题了那就从另外台电脑复制一份过来就行了,而且每个人都可以查看到别人的内容并且可进行合并

一、Git安装

  1. Linux上安装git
    直接通过命令sudo apt-get install git直接安装git,然后再输入命令git查看系统是否成功安装git(一般来说如果开始输入git提示未安装的话它就会友好地告诉你如何进行安装)
  2. Windows上安装git
    直接从Git官网安装对应版本即可,安装成功后在菜单栏可看到Git Bash/Git GUI

安装成功后,需配置个人信息:
git config --global user.name "your name"
git config --global user.email "1234@qq.com"

二、创建版本库(仓库)

1.在合适地方创建一个空目录

进行该目录下,点击鼠标右键,打开Git Bash Here

命令行如下:

$ mkdir learngit
$ cd learngit
$ pwd
/d/learngit

pwd命令显示当前所在目录,未避免出现奇怪问题,请确保目录名不含中文

2.将该目录变为Git可管理的仓库

初始化仓库,命令行如下:

$ git init
Initialized empty Git repository in D:/learngit/.git/

此时已经建好了一个空仓库,会发现当前目录下多了个.git隐藏目录,这个是用来跟踪管理版本库,也可使用命令行ls-ah看见

3.把文件添加到版本库

先在learngit的目录(子目录)下创建一个readme.txt文件,编辑内容.
然后输入一下命令行将此放入Git仓库:

$ git add .
$ git commit -m "wrote a readme file"
[master (root-commit) c571380] wrote a readme file
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

git add .表示把当前目录下的所有文件添加到仓库中
git commit表示把文件提交到仓库,-m "xxx"表示的是提交的注释
1 file changed表示1个文件被改动(在这里表示新增加的txt文件
1 insertions插入了1行内容(txt文件中有两行内容)

在添加或提交到仓库前,可使用git status查看工作区状态,若git status告诉文件有被修改过(显示红的modified),用git diff可查看修改内容.

三、穿梭基本操作

git log命令显示从最近到最远的提交日志

在Git中,用HEAD表示当前版本,类似于75a51689...的一串数字是commit id(版本号),上一版本就是HEAD^, 上上个版本就是HEAD ^ ^,以此类推,但像100个版本就是HEAD~100

cat命令表示查看当前文件内容,touch命令表示编辑当前文件内容

1. 版本回退

例如将当前版本回退到上一版本,执行命令行如下:

$ git reset --hard HEAD^
HEAD is now at 75a5168 add distributed

但是这时你再执行git log指令会发现,之前的版本已经没有了,别着急,可以执行命令git reset --hard commit_id任意穿梭版本号

  • 穿梭前可以用git log查看提交历史,以便确认回退到哪个版本
  • 要重返未来,可以用git reflog查看命令历史,以便确定要回到未来哪个版本。

2.工作区和暂存区

  • 工作区就是在电脑里可以看到的目录,比如之前的learngit文件夹
  • 版本库就是.git隐藏目录,里面最重要的就是称为stage(or index)的暂存区,还有git自动创建的第一个分支master,以及指向master的一个指针HEAD
    原理
    根据原理图,可以解释两步将问价添加到版本库的实际道理:
    git add把文件添加进去,实际上就是把问价添加到暂存区
    git commit提交更改,实际上就是把暂存区所有内容提交到当前分支。

因为创建仓库时,自动船舰了唯一一个master分支,所以当前分支就是master

理解后,你可以试试第一次修改readme.txt文件,然后执行git add指令,然后再一次修改readme.txt文件,然后执行git commit指令,结果是什么呢?

使用git status会发现只提交了第一次修改,使用git diff HEAD -- readme.txt发现第二次修改并未提交,因为git commit只将暂存区的内容提交到分支,所以说每次修改,都需要执行git add到暂存区,然后再commit.

3.撤销修改

你在readme.txt中添加一句话,然后再手动地删除添加的话恢复到上一状态,如果用git status查看,会发现已经更改了,这是可以用git checkout -- readme.txt恢复到最近一次git commitgit add时状态.

git checkout -- readme.txt是把readme.txt文件再工作区的修改全部撤销,有两种情况:
一种是readme.txt自修改后还没有放在暂存区,现在撤销修改就回到和版本库一模一样的状态
一种是readme.txt已经添加到暂存区之后,又做了修改,现在撤销修改就回到添加到暂存区后状态
总之,就是让文件回到最近一次git commitgit add时状态.

如果你已经add了,这时候就要先执行git reset HEAD readme.txt把暂存区的修改撤销掉重新放回工作区,然后再执行git checkout -- readme.txt撤销

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区

小结:

  • 场景一:当你改乱工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  • 场景二:当你不但乱改了工作区的内容,还添加到了暂存区,想丢弃修改,分两步,第一步用命令git reset HEAD file回到场景一,第二部按场景一操作.
  • 场景三:如果你已经提交到版本库,想撤销本次提交,参考版本回退一节内容,前提是你没有推送到远程仓库。

4.删除修改

一般情况下,可以通常直接在文件管理器中把没用的文件删了,或者用rm file命令删除,但是Git就知道你删除了文件,工作区和版本库就不一致了,git status会立刻告诉你哪些文件被删除了。

  • 如果你确实想从版本库里删除该文件,那就用命令git rm file删掉,并且git commit
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master 9ba8d4e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt
  • 如果你是删错了,因为版本库里还有,所以可以把误删文件恢复到最新版本
    git checkout -- test.txt

注意:从来没被添加到版本库就被删除的文件是无法恢复的!

小结:rm命令就是在工作区删文件,命令git rm用于删除一个文件并把删除文件的修改提交到暂存区,,如果一个文件已经提交到版本库,你不用担心误删,只能恢复到最新版本,而且会丢失最近一次提交后修改的内容。

若想学习远程仓库请看下一篇博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值