linux中git add命令的使用详解

当我刚开始学 git 的时候,我一直都不明白为什么要有 git add 这个命令,感觉 git 提交好麻烦
我需要

git add xxx.md
git commit -m "add xxx"
git push origin master
才能把一个文件提交到远端, 我怀念起了我之前一直用的 svn ,想想一个 svn commit就都搞定了,git 为什么这么麻烦?

用的多用的久了,我才发现了 git 的好处,说为什么 git 比 svn 好用,我的理解大概因为 git 把修改, 提交,协作,合并,都解耦到了一个个过程中,使得发生错误的情况很少,项目版本的可维护性很高。
当然,很多地方我还理解的不是很深,我现在只说下为什么要有 git add 这个命令。

git add 的本质是维护你下一次要提交的文件清单。

举个例子:
比如你在开发一个功能,文件已经改了好多了,但是都没有提交,也没有git add,这时候老板让你紧急添加一个功能,为了实现这个功能, 你修改个了a,b,c三个文件,你可以把这三个文件 git add 进来,这样这三个文件就进了下次要提交的文件清单,等快要提交的时候,你发现有个c文件是不需要修改的,你可以 git reset c, 将 c 从清单从去掉,这时候 git commit 就会只提交 a,b 文件,你也不会担心提交了那些以前修改过的文件。

git add 关键是将修改添加到清单,而不是文件添加到清单
举个例子:

假如一个已经在版本控制下的文件 a.txt,内容是

Hello world
然后你又添加了一行

Hello world
Hello china
你可以然后执行 git add a.txt , 那么下一次 git commit这个改变就会被提交, 但是假如还没来得及 git commit,你又添加了一行

Hello world
Hello china
Hello beijing
如果你没有再次 git add a.txt, 这次修改是不会被提交的

git add 操作实验

$ cd manual56/
--查看git当前版本库的状态
$ git status
# On branch master
nothing to commit (working directory clean)

--进入我要修改的章节目录
$ cd docs/Chapter_17/ 
$ vim 17.5.0.0.0.md    --新建一个md文件,里面简单写“only a test”字符串,wq保存退出编辑状态。

-- 查看状态
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       17.5.0.0.0.md   --看到有红颜色的一个新的文件还没有提交上去,这一行的文件名显示为红色。
nothing added to commit but untracked files present (use "git add" to track)添加文件add

git add 17.5.0.0.0.md添加单个文件,多个文件可以用空格来隔开,比如(git add 17.5.0.0.0.md 17.5.0.0.1.md 17.5.0.0.2.md),也可以使用git add -A添加所有的文件。

--执行添加命令
$ git add 17.5.0.0.0.md

--查看单个文件版本状态
$ git status 17.5.0.0.0.md
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   17.5.0.0.0.md
#

--查看整个库版本状态
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   17.5.0.0.0.md
#

手动用MarkdownPad打开C:\Documents and Settings\skyman\manual56\docs\Chapter_17\17.5.0.0.0.md,在里面输入中文字符串,保存退出。然后查看版本库状态,显示绿颜色的表示已经缓存起来了,显示红颜色的是修改过的但是没有缓存起来的。

时间: 2024-10-24 07:26:38

linux中git add命令的使用详解的相关文章

Linux中的Screen命令使用技巧详解

Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了.下面是我的.screenrc,仅供参考 Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了.下面是我的.screenrc,仅供参考. # # ~/.screenrc # # 启动时不显示欢迎屏幕 startup_message off #  定义screen的功能键为Ctrl-Z.向终端输入Ctrl-Z时应按 Ctrl-Z z. escape ^Zz # 屏幕缓冲区 1024 行.

linux下的yum命令原理和详解_Linux

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt

Linux中工作管理与系统资源查看详解

Part One 工作管理 工作管理指的是在单个登录终端同时管理多个工作的行为.Linux中的工作管理,简而言之就是把工作放在后台运行的行为.在windows中,我们经常也会针对各种工作做出管理,常用的将工作放在后台的方式就是最小化某个应用程序.那么为什么要对工作进行管理呢?在windows中这很好理解,我们要对其他工作进行操作时,一般只有将当前工作界面最小化才能方便处理其他工作.同样的,在Linux中,比如我们执行cp命令复制一个很大的文件时,如果不是将其置于后台执行,就只能等到复制完成才能对

Linux下Git和GitHub使用方法详解

一.linux上安装git软件 可以直接从发行版本的源里进行安装 # sudo apt-get install git   //ubuntu发行版下 # yum -y install git     //redhat.centos发行版下 二.使用https用户名密码认证连接github 1.在github上创建项目 首先需要从github上申请一个帐号,申请完成后在点击右上角的"+" 号创建一个新的repository项目,如下: 2.主机上初始化项目并同步到github服务器上 在

linux中Axel多线程下载工具参数详解

Axel安装 Debian/Ubuntu/Linux Mint用户  代码如下 复制代码 sudo apt-get install axel Redhat/Fedora 用户可用下面命令安装:  代码如下 复制代码 yum install axel 同样,大家可以源码编译安装:  代码如下 复制代码 cd ~/Download wget http://alioth.debian.org/frs/download.php/3015/axel-2.4.tar.gz tar zxvf axel-2.4

linux中sosreport工具安装使用方法详解

sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,适用于centos(和redhat一样,包名为sos).ubuntu(其下包名为sosreport)等大多数版本的linux .sosreport在github上的托管页面为:https://github.com/sosreport/sos ,而且默认在很多系统的源里都已经集成有.如果使用的是正版redhat,在出现系统问题,寻求官方支持时,官方一般也会通过sosreport将收集的

linux中samba的部署及应用详解

samba: 启动服务:nmb.server:smb.server 会通过文件系统的方式输出给客户端 smb:Service Message Block:服务信息块 cifs:Common Internet File System,通用互联网文件系统 samba:Andrew Tridgell:热情奔放的桑巴舞,主要的协议 cifs,协议 1.功能: 文件系统共享: NetBIOS协议: 打印服务: 2.工作模型 peer to peer(Work Group):工作组模型 domain dev

Linux中编译安装MemcacheQ的步骤详解

队列(Queue)是一种常用的数据结构.在队列这种数据结构中,最先插入的元素将会最先被取出:反之最后插入的元素将会最后被取出,因此队列又称为"先进先出"(FIFO:First In First Out)的线性表. 加入元素的一端叫"队尾",取出元素的一端叫"队头".利用消息队列可以很好地异步处理数据的传送和存储,当遇到频繁且密集地向后端数据库中插入数据时,就可采用消息队列来异步处理这些数据写入. MemcacheQ是一款基于Memcache协议的

linux中pip安装步骤与使用详解

1.pip下载安装 1.1 pip下载  代码如下 复制代码 # wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate 1.2 pip安装  代码如下 复制代码 # tar -xzvf pip-1.5.4.tar.gz # cd pip-1.5.4 # python setup.py