在这一节。接着使用上一节的代码样例往下讲,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. Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  2. Spring IOC过程

    https://www.processon.com/diagraming/5c96171fe4b0f88919b98497 1. AbstractApplicationContext:执行refres ...

  3. WPF中多线程统计拆箱装箱和泛型的运行效率

    WPF中多线程统计拆箱装箱和泛型的执行效率.使用的知识点有泛型.多线程.托付.从样例中能够看到使用泛型的效率至少提升2倍 MainWindow.xaml <Window x:Class=&quo ...

  4. CSS3可伸缩框属性,可用于等分显示子元素或按比例显示子元素的大小

    使用方法跟Android的android:layout_weight属性类似.可类比Android中的使用方法.这样比較好记,因为眼下全部浏览器都不支持大部分的属性,所以全部的属性都须要加上Firef ...

  5. hdu 4521 小明系列问题——小明序列(线段树+DP或扩展成经典的LIS)

    小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  6. Forms authentication timeout vs sessionState timeout

    https://stackoverflow.com/questions/17812994/forms-authentication-timeout-vs-sessionstate-timeout Th ...

  7. m_Orchestrate learning system---六、善用组件插件的好处是什么

    m_Orchestrate learning system---六.善用组件插件的好处是什么 一.总结 一句话总结: 1.面包屑导航是什么? 知道它是什么自然就知道它怎么用了 2.表格里面的栏目能能点 ...

  8. 在vmware下为oracle RAC 创建共享存储的总结

    首先,介绍下用命令行vm-diskmanager形式创建磁盘文件的方法(其实,图形界面添加新磁盘就是调用此命令).       很多网上文章提及plainmaker.exe去创建共享磁盘,是以前的版本 ...

  9. Codeforces 982 C. Cut 'em all!(dfs)

    解题思路: 代码中有详细注解,以任意一点为根,dfs遍历这棵树. 每一个节点可能有好几个子树,计算每棵子树含有的节点数,再+1即为这整棵树的节点. 判断子树是否能切断与根之间的联系,如果子树含有偶数个 ...

  10. POJ 1195 Mobile phones【 二维树状数组 】

    题意:基础的二维数组,注意 0 + lowbit(0)会陷入无限循环----- 之前做一道一维的一直tle,就是因为这个-------------------------- #include<i ...