20180617_Git常用命令3(一些常用的概念和管理git的命令)

Git常用命令3(一些常用的概念和管理git的命令【工作区、暂存区、管理修改、撤销修改、删除文件】)

感谢廖雪峰老师提供的git教程:

传送门:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git里面的工作区和暂存区

工作区:在你的电脑里面,你能看到的目录。

比如:我的learngit文件夹就是一个工作区。

版本库:

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

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


我们把文件往Git版本库里添加的时候,是分两步执行的:

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

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

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

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

练习工作区和暂存区的代码,我就不演示了:

看廖雪峰老师的例子,传送门:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

常用命令:


--查看git状态

$ git status

--将文件添加到git

$ git add filename

--将暂存区的文件统一提交到git

$ git commit -m “你的描述”

Git的常用概念:管理修改

为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

为什么说Git管理的是修改,而不是文件呢?我们还是做实验。第一步,对readme.txt做一个修改,比如加一行内容:

添加到git:

再添加一行内容:

提交到git,查看状态

第二次的修改没有提交。

别激动,我们回顾一下操作过程:

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


--查看工作区文件与版本库文件的区别

git diff HEAD -- readme.txt

把两次修改合并后一块提交了:

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

好,现在,把第二次修改提交了。

查看状态:

Vim命令讲解:

初始进入vim编辑器为命令模式:


按I,进入编辑模式。

进入编辑模式最下面会有提醒,如按下i,最下面会提醒-- INSERT --

按esc,回到命令模式。


在按:wq,退出vim编辑器。

:wq 保存文件并退出

Git管理之撤销修改

场景1:在工作区修改了文件,但没有将文件添加到git暂存区。

使用:


$ git checkout -- filename

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

再次查看,文件被还原了。

场景2:在工作区修改了文件,并且将文件添加到git暂存区。

用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:


$ git reset HEAD <file>

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

修改后的readme.txt添加到了暂存区。

使用命令git reset HEAD <file>可以把暂存区的修改撤销掉

再回到场景1,撤销掉工作区的修改。

查看git状态,是干净的

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把stupid boss提交推送到远程版本库,你就真的惨了……

Git管理之删除文件

创建一个新文件test.txt,

查看test.txt文件

将test.txt添加到git,并提交。

删除test.txt


$ rm test.txt

查看状态

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

从版本库中删除test.txt文件


$ git rm test.txt

小提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。

第二种情况是删错了

因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:


$ git checkout -- test.txt

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

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

注意,如果你的版本库的文件也以及删除,就不能使用这种方法了。

(╥╯^╰╥)我的删除操作已经提交到git了。不能从版本库恢复了。

这时,就又要参考版本退回一节了,这里不提供传送门了。

原文地址:https://www.cnblogs.com/mfcfine/p/9192692.html

时间: 2024-08-28 18:16:59

20180617_Git常用命令3(一些常用的概念和管理git的命令)的相关文章

svn 命令行下常用的几个命令

svn 命令行下常用的几个命令 下载网址: https://www.visualsvn.com/downloads/ 下载直接安装即可. 1.将文件checkout到本地目录   svn checkout path(path是服务器上的目录)    例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2.往版本库中添加新的文件     svn add file   例如:svn add test.php(添加test.php) svn a

第3章 Linux常用命令(4)_帮助、用户管理和解压缩命令

4. 帮助命令 4.1 获取帮助信息:man (1)man命令 命令名称 man(英语原义:manual) 命令所在路径 usr/bin/man 执行权限 所有用户 语法 man [级别] [命令或配置文件] [空格]或PgDn:向下翻页 PgUp:向上翻页 [回车]或下箭头:换行 q或Q:退出 在左下方的":"输入"/要查找内容",然后按n继续查找. (2)注意事项 ①man手册的几个级别 级别 代表内容 1 Shell命令或可执行文件 2 由kernel提供的系

mysql常用命令大全 mysql常用命令总结

本文介绍下,mysql中常用的一些命令,包括创建与修改数据库.数据库中的表,mysql的权限管理命令grant.revoke等的用法. 创建与管理mysql数据库的常用命令:1,使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES; 2,创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA; 3,选择创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时

Linux常用命令(五)账号和组管理

  一.管理用户账号 1.用户账号的分类 ■超级用户:root用户是Linux系统中默认的超级用户账号,对本主机拥有最大的权限,类似于Windows         系统中的Administrator用户. ■普通用户:普通用户账号需要由root用户或其他管理员用户创建:拥有的权限收到一定限制,一般只                        在用户自己的宿主目录中拥有完整权限. ■程序用户:在安装linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般        

54. Android中adb常用命令及应用常用目录

本文主要介绍adb常用命令及应用常用目录.1.adb常用命令adb devices列出所有连接的android设备.以下命令都是对单个devices而言,如果存在多个devices的话,下面的命令都需要将adb变为adb -s deviceId adb shell进入devices命令行模式,进入命令行模式,就是linux命令行了adb shell command进入devices命令行模式,并运行命令commandadb shell am start -n <package>/<pac

find——文件查找命令 linux一些常用命令

find 命令eg: 一般文件查找方法: 1.  find /home -name file  ,  在/home目录下查找文件名为file的文件2.  find /home -name '*file*'  ,  在/home目录下查找文件名包含file的文件3.  find /home -name 'file*'  ,  在/home目录下查找以file开头的文件名的文件4.  find /home -size 512c  ,    在/home目录下查找512kb大小的文件5.  find

DOS 命令集锦——最常用命令

一. 常用命令: cd 改变当前目录   sys 制作DOS系统盘 (电脑入门到精通网 www.58116.cn) copy 拷贝文件  del 删除文件 deltree 删除目录树    dir 列文件名 diskcopy 制磁盘  edit 文本编辑 (电脑入门到精通网 www.58116.cn) format 格式化磁盘   md 建立子目录 (电脑入门到精通网 www.58116.cn) mem 查看内存状况    type 显示文件内容 rd 删除目录  ren 改变文件名 二. 其他

常用的查看华为设备运行状况及排错诊断时命令(一)

常用的查看设备运行状况及排错诊断时命令 1. 接口下查看接口的传输包的近300s的个数,bits,以及入向和出向的包的流量.丢包个数.带宽占比 [Huawei] interface ethernet 2/0/0[Huawei-Ethernet2/0/0] display this interface 2. display cpu-defend statistics命令用来查看上送CPU报文的统计信息 <Huawei> display diagnostic-information dia-inf

MySql常用命令集Mysql常用命令5

九. 交叉查询 交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过 两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部. Microsoft Jet SQL 用TRANSFROM语句创建交叉表查询语法: TRANSFORM aggfunction Select 语句 GROUP BY 子句 PIVOT pivotfield[IN(value1 [,value2[,-]]) ] Aggfounction指SQL聚积函数, Select语句选择作为标题的的字段, GR