Git 学习(三)本地仓库操作——git add & commit

  Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。这在上文已有提及,本文具体说明什么是工作区及暂存区,以及如何使用本地git库的操作命令:重点 git add 及 git commit 。

  回顾上一章节版本库创建: 先将 D:盘下的 learngit 整个文件夹删除,然后创建空的 Git 版本库。

  

  工作区 和  版本库

    工作区(Working Directory)即操作系统中看到的文件夹,如  d:/learngit ,目前工作区是空的。

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

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

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

      第二步:git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支(创建Git版本库时,Git自动创建了master分支; 所以,目前 git commit 就是往master分支上提交更改;分支的概念之后章节会详细说明)

    可简单理解为,需要提交的文件修改通通放到暂存区;然后,一次性提交暂存区的所有修改。下面具体说明 git add 及 git commit 操作 (有兴趣的可关注下 git add 和 commit 文件后 .git 目录的变化)

  暂存区操作 git add

    暂存区操作使用 git add 命令,git add <filename> 可以添加单个文件至暂存区,我们可在当前空的 learngit 文件夹中加入文件;此时,暂存库(stage)中会存有之前 add 的文件。

    git add <file>   把单一指定文件加入至暂存区(须加后缀格式)

    例如:在该文件夹中新建一空的 1.txt 文件,将该文件加入暂存区,需  git add 1.txt ; 未 add 前,git status 会提示(红框)。

    

    若修改了该 1.txt, 由于工作区和暂存区文件不同,仍须  git add 1.txt

    若新增或更改多个指定文件, 可使用空格分隔多个文件add,如:  git add 1.txt 2.txt

    文件名称也可使用通配符 * 等进行操作,如:  git add *.txt,表示保存所有 .txt 后缀文件至暂存区 (有关文件通配符请自行google了解)

    若需查阅工作区与暂存区的差异,可用  git diff

    git diff        工作区与暂存区相比的差异

    工作区删除了文件,若暂存区也须删除,可用  git rm <file>

    git rm <file>     暂存区删除文件,可多个,空格分隔

    若大批量 增、删、改文件,显然一个个添加或删除是不可取的,以下命令可快捷操作暂存区(建议练习使用,加深对以下几个命令的理解):

    git add -A                    暂存区与工作区保持一致(stages All)

    git add .                       暂存区新建文件及更改文件(stages new and modified, without deleted)

    git add -u                    暂存区删除文件及更改文件(stages modified and deleted, without new)

注意:git add 不支持添加空文件夹,可参考 http://www.zhihu.com/question/29811994

  

  git commit

    git commot -m "<message>"     把暂存区的所有修改提交到分支,须输入描述信息

    例如:若暂存区已加入了 1.txt 文件,提交至分支(目前是 master)  git commit -m "add 1.txt"  ;未 commit 前,git status 会提示未提交;commit 过程会有代码显示如下。

    

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

 
      commit 提交的过程还是比较好理解的,注意描述信息的必要性,虽然有办法可以省去,但不建议省。除了通用的提交,以下commit命令也较常用:
 
      git commot --amend                       更改之前一次commit的描述信息
 
      git commot -a -m "<message>"    把暂存区的所有被修改或者已删除的且已经被git管理的文档提交提交到分支,须输入描述信息(可省略 git add 过程)
      
      大多数情况下,我们所做的都是在原有代码上修改,故上述命令在实际操作过程中很实用(可省略 git add)
      

小结

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

Git 学习(三)本地仓库操作——git add & commit的更多相关文章

  1. 【Git 学习三】深入理解git reset 命令

    重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令.来看看git reset命令用法. --------------------------------------- ...

  2. git学习--更新本地仓库单独文件

    命令: git checkout origin/dev .gitignore 从远端 dev 仓库,更新本地签出分支的 .gitignore 文件

  3. Git学习——创建本地仓库、提交文件

    创建Git仓库 新建或找一个存在的文件夹,在命令行进入该文件夹,输入命令 git init 添加文件到Git仓库 首先使用命令git add <file>,可以多次添加文件: 使用命令gi ...

  4. Git 学习(四)操作修改和版本穿梭

    Git 学习(四)操作修改和版本穿梭 之前的章节,已介绍了本地Git库创建.暂存区增.删.改,以及提交版本库:可回顾下命令操作: git add 和 git commit. 光有之前章节的操作,Git ...

  5. Git学习教程一之安装Git&&&本地仓库建立

    一. 安装git 1:在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项一直安装即可. 2:安装完成后,在开始菜单里找到“Git”-> ...

  6. Git单人本地仓库操作

    本地仓库是个.git隐藏文件 以下为演示Git单人本地仓库操作 1.安装git sudo apt-get install git 密码:skylark 2.查看git安装结果 git 3.创建项目 在 ...

  7. (超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库

    (超详细)使用git命令行将本地仓库代码上传到github或gitlab远程仓库 本地创建了一个 xcode 工程项目,现通过 命令行 将该项目上传到 github 或者 gitlab 远程仓库,具体 ...

  8. Git学习笔记(一)Git初识及基本操作

    详细完整教程:官方文档,廖神Git教程,武sir 一.什么是Git? 定义:Git是分布式版本控制系统. 1.1什么是版本控制 我们可以回想以下,在我们上学毕业要写论文或是准备一份演讲稿的时候,都会用 ...

  9. git学习四:eclipse使用git提交项目

    支持原创:http://blog.csdn.net/u014079773/article/details/51595127 准备工作: 目的:eclipse使用git提交本地项目,提交至远程githu ...

随机推荐

  1. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

  2. Java反射机制demo(六)—获得并操作一个类的属性

    Java反射机制demo(六)—获得并操作一个类的属性 获得并操作一个类的属性?! 不可思议啊,一个类的属性一般都是私有成员变量啊,private修饰符啊! 但是毫无疑问,这些东西在Java的反射机制 ...

  3. JavaScript 网页脚本语言 由浅入深 (随笔)

    1)基础 学习目的: 1. 客户端表单验证 2. 页面动态效果 3. jQuery的基础 什么是JavaScript? 一种描述性语言,也是一种基于对象和事件驱动的,并具有安全性能的脚本语言 java ...

  4. JavaScript ES6箭头函数指南

    前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性.有传闻说,箭头函数的语法=>,是受到了CoffeeSc ...

  5. python opencv3 grabcut前景检测

    git:https://github.com/linyi0604/Computer-Vision import numpy as np import cv2 import matplotlib.pyp ...

  6. 工作中怎么解决bug

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,看日志 2,看日志解决不了,断点调试 3,网络搜索.

  7. HDU 1692 Destroy the Well of Life 水题

    Destroy the Well of Life Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showprob ...

  8. 1、安装Redis的PHP扩展

    1.安装Redis的PHP扩展 1.1 安装phpize yum install php-devel 1.2 下载扩展源码包,直接用wget #wget下载github上的文件 wget https: ...

  9. CentOS 7下配置安装KVM

    注意:KVM一切安装和运行都是在root用户下完成的,并且只有root才能支持某些软件. 一.准备工作: 1.关闭selinux,iptables,重启后生效 ##关闭selinux # sed -i ...

  10. WindowsPhone&amp;Windows8.1&amp;Windows8&amp;Unity3d 填坑日记

    近期的游戏开发大体上接近尾声,总结了不少关于Unity3d面向Windows几大平台开发时遇到的各种坑以及怎样填坑的经验.总的来说,Windows8.1 Windows8/RT以及WindowsPho ...