首页 > 代码库 > Git(三):加入与提交
Git(三):加入与提交
在这一节。接着使用上一节的代码样例往下讲,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=http://www.mamicode.com/"about.html">About
如今执行git add -i。启动交互方式,Git给出例如以下提示:
如今有几个选项能够选择,输入1显示暂存区的状态,眼下尚未变动,所以输出与上面同样。假设想要加入文件到暂存区。能够输入2:
这会显示一个可暂存文件列表。
在本例中,仅仅有一个文件需要加入,所以输入1。然后在该文件的名称前面出现了一个星号(*)标识,表示该文件将暂存。
假设想退出该模式,回车键就可以。这时再次察看工作文件夹树的情况。能够看到一个已缓存的改动,而没有未暂存的改动了:
假设想要取消已暂存的改动,能够使用revert模式。revert模式的使用方法跟前面介绍的"update"模式使用方法相似。
假设想要暂存还没有被Git跟踪的文件。能够使用第4个模式。它的使用方法跟其它的模式类似,在此就不再演示了。
"patch"模式是交互方式中最实用的模式,进入该模式的方法跟其它模式类似。进入到"patch"模式后。能够选择单个或者多个文件。选择后,Git会显示这些文件的当前内容与版本号库中的差异,然后你能够据此决定是否加入这些改动到暂存区。
执行情况例如以下:
能够依据须要决定是否加入该文本块(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版本号控制的新文件。
如今来看看前面已经暂存过的改动:
接下来。我们改动文件里的一处。在"About"链接后加入一条"Contact"链接:
<li><a href=http://www.mamicode.com/"contact.html">Contact
完毕后请保存改动,然后再运行git status:
输出结果把index.html文件显示了两遍。
Changes to be commited(待提交变更)部分中的那个相应之前已经暂存过的改动:Changed but not updated(未更新到索引的变更)部分中的那个相应还未暂存的改动。
查看文件变动
使用命令git diff,Git能够显示出工作文件夹树、暂存区及版本号库之间的差异。
直接调用不带參数的git diff,比較的是工作文件夹树与暂存区之间的差别。
假设想比較暂存区和版本号库中的差别。可在git diff后加入參数--cached;
在命令git diff后面加入參数HEAD,能够比較工作文件夹树(包含暂存和未暂存的改动)与版本号库中的区别:
接下来运行提交操作,以便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(三):加入与提交
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。