在这一节。接着使用上一节的代码样例往下讲,http://blog.csdn.net/troy__/article/details/39806245

加入文件到暂存区

     加入新文件和改动版本号库中的已有文件的内容是经常使用的操作。命令git add能够完毕这两种操作,帮助暂存需要提交的变更。暂存的变更(stage change)就是工作文件夹树中那些你打算提交到版本号库的变更。暂存操作将会更新Git的内部索引(index),大家常把该索引称为暂存区(staging
area)

     在非常多情况下,使用暂存区确实非常麻烦,我们后面会讲怎样简化提交操作。但在这里,暂存区为我们提供了精心选择提交内容的机会,让我们看看怎样使用暂存区精选选择提交内容。

     给命令git add加入-i选项会启动交互命令提示符。在这样的方式下能够交互暂存新文件。暂存对已有文件的改动,甚至仅仅暂存部分改动。接下里改动index.html文件以便演示,例如以下把Biography链接改为About:
<li><a href="about.html">About</a></li>
     如今执行git add -i。启动交互方式,Git给出例如以下提示:

     如今有几个选项能够选择,输入1显示暂存区的状态,眼下尚未变动,所以输出与上面同样。假设想要加入文件到暂存区。能够输入2:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJveV9f/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

     这会显示一个可暂存文件列表。

在本例中,仅仅有一个文件需要加入,所以输入1。然后在该文件的名称前面出现了一个星号(*)标识,表示该文件将暂存。


     假设想退出该模式,回车键就可以。这时再次察看工作文件夹树的情况。能够看到一个已缓存的改动,而没有未暂存的改动了:

     假设想要取消已暂存的改动,能够使用revert模式。revert模式的使用方法跟前面介绍的"update"模式使用方法相似。

假设想要暂存还没有被Git跟踪的文件。能够使用第4个模式。它的使用方法跟其它的模式类似,在此就不再演示了。

     "patch"模式是交互方式中最实用的模式,进入该模式的方法跟其它模式类似。进入到"patch"模式后。能够选择单个或者多个文件。选择后,Git会显示这些文件的当前内容与版本号库中的差异,然后你能够据此决定是否加入这些改动到暂存区。

执行情况例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJveV9f/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

     能够依据须要决定是否加入该文本块(hunk)。文本块由文件里连续的改动结构构成,文件里不同的区域作为不同的文本块。
     依据提示。输入y表示接受改动,输入n表示忽略改动,输入"a"或"d"分别表示加入或放弃剩余的改动。不用操心该怎样记住全部这些选项,输入"?"将会显示全部选项的帮助信息。

     如今输入n以放弃暂存该缓存块,然后输入选项7退出交互方式。
     补丁模式是经常使用的,git add提供了一个參数-p直接进入补丁模式。

比如。能够执行以下的命令直接启动补丁模式:


     这次输入y选择文件块,然后该文件就处于暂存状态并准备提交了。

提交改动

     提交是一个相对简单的过程,它将变更加入到版本号库的历史记录中,并为它们分配一个提交名称。

     注意,这里所说的提交并非把改动发送到某个中央版本号库中,而是提交到本地版本号库。但其它人能够从你的本地版本号库中拖入改动,或者你从本地版本号库推入某个其它的版本号库。
     有多种使用命令git commit的方式,这些方式都需要输入一段提交留言。对于简短的留言。能够使用參数-m,在參数之后输入。

留言内容能够是随意有效字符串。

假设留言包括多段内容。能够给命令git commit传递多个-m。

     对于比較复杂的提交留言,需要用编辑器来输入。假设输入不带-m參数的git commit命令,Git将启动编辑器来编辑提交留言。

使用编辑器创建提交留言这样的方式时,能够加入选项-v把要提交的内容与版本号库中版本号的比較结果加入到编辑器中。编辑器中显示的信息有非常多以符号"#"開始的行,Git提取提交留言时会忽略这些行。

     有三种提交方法:
1. 先对要提交的文件或改动调用命令git add来加入到暂存区,然后再调用git commit命令完毕提交。该步骤例如以下所看到的:
$ git add some-file
$ git commit -m "changes to some-file"
2. 还有一种提交的方法是给命令git commit传递-a參数。Git会把工作文件夹树中当前全部的改动提交到版本号库中。

注意在这样的情况下,命令git commit仅仅会把已纳入Git版本号控制的文件加入到版本号库中,而不会加入尚未被跟踪的文件。

该步骤例如以下所看到的:

$ git commit -m "changes to some-file" -a
3. 最后一种提交的方法是指定要提交的文件或文件列表。详细做法是,把要提交的文件列在其它參数的后面。
$ git commit -m "changes to some-file" some-file

查看改动内容

     使用Git的命令git status和git diff,能够找出工作文件夹树中做了哪些改动,以及是怎样改动的。
查看当前状态
     能够使用git status来查看工作文件夹树中全部的变动。该命令的输出结果是暂存区内要提交的内容,工作文件夹树中未纳入暂存区的修改,以及尚未纳入Git版本号控制的新文件。
     如今来看看前面已经暂存过的改动:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJveV9f/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

     接下来。我们改动文件里的一处。在"About"链接后加入一条"Contact"链接:
<li><a href="contact.html">Contact</a></li>
     完毕后请保存改动,然后再运行git status:

     输出结果把index.html文件显示了两遍。

Changes to be commited(待提交变更)部分中的那个相应之前已经暂存过的改动:Changed but not updated(未更新到索引的变更)部分中的那个相应还未暂存的改动。


查看文件变动
     使用命令git diff,Git能够显示出工作文件夹树、暂存区及版本号库之间的差异。
     直接调用不带參数的git diff,比較的是工作文件夹树与暂存区之间的差别。


     假设想比較暂存区和版本号库中的差别。可在git diff后加入參数--cached;

     在命令git diff后面加入參数HEAD,能够比較工作文件夹树(包含暂存和未暂存的改动)与版本号库中的区别:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJveV9f/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

     接下来运行提交操作,以便Git记录和跟踪变更:
$ git commit -a -m "Change biography link and add contact link"

管理文件

文件重命名与移动     
     在Git中,能够通过命令git mv <原文件名> <新文件名>来移动文件。该命令告诉Git使用原文件的内容来创建新文件,新文件保留原文件的历史改动记录。并删除原文件。
     假定我们要移动之前的index.html:

     然后我们再利用commit命令提交这次改动就可以。

忽略文件
     忽略文件有两种形式:假设仅仅是想在本地的版本号库中忽略该文件。那么能够将该文件的名称加入到.git/info/exclude文件里。否则,假设想把这样的忽略传播出去,那么能够在.git所在的同级文件夹下加入.gitignore文件,将忽略的内容加入在这个文件之中,然后再在git中跟踪该gitignore文件就可以。
     在加入文件名时。能够使用统配符的形式,比如:"*.swp"。
     

Git(三):加入与提交的更多相关文章

  1. 详细介绍如何在win7下首次实现通过Git bash向Github提交项目

    详细介绍如何在win7下首次实现通过Git bash向Github提交项目 引自:http://jingpin.jikexueyuan.com/article/35944.html 作者: wddoe ...

  2. 多人开发的git项目如何保持提交日志为一条直线?

    多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...

  3. git 三步走

    git三步走: git add .        (注:别忘记后面的.,此操作是把Test文件夹下面的文件都添加进来) git commit  -m  "提交信息"  (注:“提交 ...

  4. git commit -am "remark" 提交

    一.前言 假如你昨晚把本地文件a.html提交到远程库,今早发现还有补充的内容,于是添加了新的内容到a.html,并且还在本地还多添加了“几个文件”,那么怎么使用git来把这些文件一并提交到远程库呢? ...

  5. Git之初始化及提交操作

    Git 的配置文件有三个: Git 把管理的文件分为了两个区域四个状态: 工作区: 当前开发程序所在目录称为工作区,该区域的文件会有状态的变化且状态由 git自动检测,程序中文件做任何操作(增.删.改 ...

  6. git命令将本地代码提交到github

    git命令将本地代码提交到github 步骤: 第一步:进入到相应的文件夹,用git init命令,将该文件夹变成git可管理的仓库 git init 第二步:将项目添加到本地仓库 可以用git st ...

  7. git三种模式及常用命令

    Git的三种重要模式,分别是已提交.已修改.已暂存. 已提交(committed):表示数据文件已经顺利提交到Git数据库中. 已修改(modified):表示数据文件已经被修改,但未被保存到Git数 ...

  8. 【Git教程】如何清除git仓库的所有提交记录,成为一个新的干净仓库

    一.引言 马三也算Github的忠实用户了,经常会把一些练手的项目传到Github上面进行备份.其中有一个名为ColaFramework的Unity框架项目,马三开发了一年多了,期间提交代码的时候在L ...

  9. git合并多次commit提交

    在开发项目工程中经常会遇到为了一个需求产生多次提交记录.有些是可以接受的,比如按照功能点不同进行的提交.但往往会存在这种,只为了一个小东西进行改动,比如多余文件的提交.书写不规范而不得不提交的情况.多 ...

随机推荐

  1. Unity WWW类调用http

    1.Http请求中Content-Type讲解 MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Content-Type ...

  2. jquery中的jsonp跨域调用(接口)

                                                                           jquery jsonp跨域调用接口

  3. 06002_Redis概述

    1.什么是Redis? (1)Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,他通过提供多种键值对数据类型类适应不同场景下的存储需求: (2)Redis是一种高级的key ...

  4. 【Codeforces Round #476 (Div. 2) [Thanks, Telegram!] B】Battleship

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 暴力枚举船的左上角. 然后统计每个点被覆盖次数就好. [代码] #include <bits/stdc++.h> #de ...

  5. OSGI项目中获取文件路径

    假设想依据给定的文件名创建一个File实例,你可能会这么写: File file = new File(当前类.class.getResource("config").toURI( ...

  6. Android之怎样改变焦点状态【EditText】

    以EditText为例 1.改变焦点状态 password.setOnFocusChangeListener(new OnFocusChangeListener() { @Override publi ...

  7. 我网站用session做的登录,为什么清除浏览器数据后还是得重新登录?session是存在服务器上的。

    答案一: 你清除了浏览器数据,相当于把cookie也清了,那么你的sessionId也就没有了,所以你再次请求的时候服务器无法根据你携带的sessionid来获取对应的session,所以说需要重新登 ...

  8. 读书笔记-构建高性能Web站点

    基本概念 带宽:通常说的带宽比如8M带宽,是指主机与互联网运营商的交换机之间的数据传输速度,因为数据链路层的流量是通过控制接收方实现的.而百兆网卡则是指网卡的发送速度为100Mbit/s,则是指网卡发 ...

  9. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))

    前置问题:51nod 1102 面积最大的矩形 附上链接: 51nod 1102 面积最大的矩形 这题的题解博客 需要了解的知识:单调栈,在前置问题中已经讲解. 解题思路 对每行求左边连续1的个数,得 ...

  10. 路飞学城Python-Day4

    29.二进制转换计算机使用的语言就是二进制古时候,人们使用信鸽.书信.千里马等方式.但是这样的方式是不可靠的,时间也长.古时候的军方,通过烽火狼烟进行简单的信息交流 30.二进制的转换(II)8 4 ...