Git 文件操作和历史回退

《Git 文件操作和历史回退》要点:
本文介绍了Git 文件操作和历史回退,希望对您有用。如果有疑问,可以联系我们。

创立仓库

创立新文件夹:mkdir learngit

进入:cd learngit

ls发现没有任何东西:git init 将这个文件夹设置为git文件夹.目录下面会出现.git 的暗藏文件

创建文件/文件夹

当移入/创建新的文件和文件夹时,必要git add file

然后,git commit -m 阐明将文件提交到当前分支.执行命令前后的区别,可以通过git status来查看.

修改文件/文件夹

当修改文件内容的时候,调用git status会发现modified:,阐明没有提交到当前分支.

此时,可以git diff 改动的文件名,来查看文件哪里进行了改动.

当然,最后还是必要先git add file,再git commit -m 说明一下.

查看git status的成果的最后应该是:working directory clean

回到修改前的版本

git log:可以查看最近到最远的提交日志.如果嫌输出信息太多,看得眼花缭乱的,可以尝尝加上--pretty=oneline参数,使用git log --pretty=oneline

需要友情提示的是,你看到的一大串类似3628164...882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你本身的为准.为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,3……作为版本号,那肯定就冲突了.

git reset --hard 一段commit_id的缩写:重回对应的版本,不必要全部的commit_id,只要前几位可以区分就行.嫌麻烦的话,可以git reset --hard HEAD~num,例如 git reset --hard HEAD~100回退到前100个版本.

撤销修改

git checkout -- file:如果只是想在没有commit提交之前撤销修改,这条命名会让文件撤销修改.

注意,必需有 --,否则就是切换分支了.

删除文件

如果手动删除了文件/敕令行rm file删除了文件

  1. 如果想彻底删除:git rm file,然后再git commit -m "..." 提交到版本库
  2. 不小心删错了:git checkout -- file 恢复即可.

工作区、暂存区、版本区

Git和其他版本控制系统如SVN的一个不同之处便是有暂存区的概念.

先来看名词解释.

工作区(Working Directory)

就是你在电脑里能看到的目录,好比我的learngit文件夹就是一个工作区:

working-dir

版本库(Repository)

工作区有一个暗藏目录.git,这个不算工作区,而是Git的版本库.

Git的版本库里存了很多东西,其中最重要的便是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD.

git-repo

分支和HEAD的观点我们以后再讲.

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

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

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

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

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

俗话说,实践出真知.现在,我们再练习一遍,先对readme.txt做个修改,好比加上一行内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.

然后,在事情区新增一个LICENSE文本文件(内容随便写).

先用git status查看一下状态:

$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   readme.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       LICENSE
no changes added to commit (use "git add" and/or "git commit -a")

Git异常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked.

现在,使用两次敕令git add,把readme.txtLICENSE都添加后,用git status再查看一下:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   LICENSE
#       modified:   readme.txt
#

现在,暂存区的状态就酿成这样了:

git-stage

所以,git add命令实际上便是把要提交的所有修改放到暂存区(Stage),执行git commit就可以一次性把暂存区的所有修改提交到分支.

$ git commit -m "understand how stage works"
[master 27c9860] understand how stage works
 2 files changed,675 insertions(+)
 create mode 100644 LICENSE

一旦提交后,如果你又没有对工作区做任何修改,那么工作区便是“干净”的:

$ git status
# On branch master
nothing to commit (working directory clean)

现在版本库酿成了这样,暂存区就没有任何内容了:

git-stage-after-commit

小结

暂存区是Git异常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么.

没弄明确暂存区是怎么回事的童鞋,请向上滚动页面,再看一次.

更多 Git 教程系列文章: 

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git使用图文具体教程  http://www.linuxidc.com/Linux/2016-11/136781.htm

Ubuntu Git安装与使用 http://www.linuxidc.com/Linux/2016-11/136769.htm

Git 标签治理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支治理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 长途仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 当地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享适用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Git从入门到学会 http://www.linuxidc.com/Linux/2016-10/135872.htm

Git根本操作详解 http://www.linuxidc.com/Linux/2016-10/135691.htm

Git部署与常用根本命令详解   http://www.linuxidc.com/Linux/2017-06/144961.htm

散布式版本控制系统 Git 详细教程  http://www.linuxidc.com/Linux/2017-05/143747.htm

Git 的详细先容:请点这里
Git 的下载地址:请点这里

本文永远更新链接地址:http://www.linuxidc.com/Linux/2017-06/145144.htm

linux

更多LINUX教程,尽在编程之家PHP学院专栏。欢迎交流《Git 文件操作和历史回退》!

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...