Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited)

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

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

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

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

1、打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区
2、在工作区新增一个文本文件,状态是Untracked(未跟踪)
3、git add 命令实际上就是把要提交的所有修改放到暂存区(Stage),Git便会在暂存区中生成一个该文件的索引,文件此时处于uncommited状态
4 、执行 git commit 就可以一次性把暂存区的所有修改提交到分支。

git diff 比较文件

git diff  filepath 工作区与暂存区比较

git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较

git diff --staged 或 --cached  filepath 暂存区与HEAD比较

git diff branchName filepath  当前分支的文件与branchName 分支的文件进行比较

git diff commitId filepath 与某一次提交进行比较

仅仅删除暂存区里的文件

  git rm --cache 文件名

删除暂存区和工作区的文件

  git rm -f 文件名

删除错误提交的commit,也可称为版本回退

    git reset有三个选项,--hard、--mixed、--soft

撤销已提交的版本库,不会修改暂存区和工作区
  git reset --soft 版本库ID
   撤销已提交的版本库和暂存区,不会修改工作区
  git reset --mixed 版本库ID
  彻底将工作区、暂存区和版本库记录恢复到指定的版本库
  git reset --hard 版本库ID

相关文章:GIT工作区、暂存区、版本库之间的关系

GIT 工作区,缓存区

Git删除暂存区或版本库中的文件

git 各个区的区别的更多相关文章

  1. git commit -m 与 git commit -am的区别

    字面解释的话,git commit -m用于提交暂存区的文件:git commit -am用于提交跟踪过的文件 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下面的所有文件 ...

  2. git rm与git rm --cached的区别

    git rm与git rm --cached的区别 当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用. git rm file_path git commit -m 'd ...

  3. git fetch和git pull之间的区别--转载

    原文地址:http://blog.csdn.net/a19881029/article/details/42245955 git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢 ...

  4. git init 与 git init --bare 的区别

    git init  和 git init –bare 的区别 使用命令"git init --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repos ...

  5. TortoiseGit学习系列之Git和TortoiseGit的区别

    不多说,直接上干货! Git和TortoiseGit的区别: TortoiseGit的安装和使用依赖Git.

  6. Git学习系列之Git和TortoiseGit的区别

    不多说,直接上干货! Git和TortoiseGit的区别: TortoiseGit的安装和使用依赖Git. Git有且只有一个,就是linux最初创建的那个叫做Git的程序.现在的维护者的名字我懒得 ...

  7. Git GUI,Git Bash,Git CMD之间的区别

    Git GUI,Git Bash,Git CMD之间的区别 Git Bash: Bash,Unix shell的一种,Linux与Mac OS X v10.4都将它作为默认shell.Git Bash ...

  8. todo...git ssh http的区别

    todo...git ssh http的区别 https://www.jianshu.com/p/2cced982009f https://www.cnblogs.com/skating/p/6296 ...

  9. git init和git init –bare的区别:

    感谢原文作者:ljchlx 原文链接:https://blog.csdn.net/ljchlx/article/details/21805231 git init 和 git init –bare 的 ...

随机推荐

  1. 刷题向》DP》值得一做》关于对DP问题的充分考虑(normal)

    在你辛苦调试一道DP题,遇到瓶颈的时候,你是否感到一股洪荒之力遏制住你的思想,使你给题库贡献了一倍的WA.RE.TLE量,却没有AC过一次? 在这时,你应该考虑的是砸电脑再次重新考虑整个题目,再应对自 ...

  2. 266. Palindrome Permutation 重新排列后是否对称

    [抄题]: Given a string, determine if a permutation of the string could form a palindrome. For example, ...

  3. Openssl ca命令

    一.简介 ca命令能够签发证书请求文件以及生成CRL列表 二.语法 openssl ca [-verbose] [-config filename] [-name section] [-gencrl] ...

  4. xgboost 完全调参指南

    http://www.2cto.com/kf/201607/528771.html xgboost: https://www.analyticsvidhya.com/blog/2016/03/comp ...

  5. App测试从入门到精通之功能测试

    App的功能测试指的是针对软件需求以及用户要求针对APP功能进行测试.简单点理解就是保证App功能的正确性,不要系统出现Bug.让用户用户的舒服,用的爽!好了,我们看下关于App的功能测试要点有哪些? ...

  6. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(2):SSM+Redis概念理解

    一.SSM+Redis的结构图 在Java互联网中,以Spring+SpringMVC+MyBatis(SSM)作为主流框架,SSM+Redis的结构图如下: 二.下面介绍它们各自承担的功能: 1.S ...

  7. 在sql server数据库可以插入在回车的数据

    insert into t_FamilyClass (id,ParentId,Name) values(111,111,'111')可以在编辑模式下copy到editplus中,设置 显示 空白字符: ...

  8. WinForm中使用自定义Tooltip控件

    private ToolTip tooltipCtr; 构造函数中: 隐藏默认的Tooltip:this.ShowCellToolTips = false; this.tooltipCtr = new ...

  9. Android学习笔记 ImageSwitcher图片切换组件的使用

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  10. [Algorithm]图

    一.图的算法 邻接矩阵表示的数据结构 1 #define INFINITY INT_MAX // 无穷大 2 #define MAX_VERTEX_NUM 20 // 限制顶点最大数值为20个 3 # ...