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="about.html">About</a></li>

现在运行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="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,可以比较工作目录树(包括暂存和未暂存的修改)与版本库中的差别:

接下来执行提交操作,以便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"。

时间: 2024-10-10 18:35:36

Git(三):添加与提交的相关文章

git 三步走

git三步走: git add .        (注:别忘记后面的.,此操作是把Test文件夹下面的文件都添加进来) git commit  -m  "提交信息"  (注:"提交信息"里面换成你需要,如"first commit") git push -u origin master   (注:此操作目的是把本地仓库push到github上面,此步骤需要你输入帐号和密码) 有问题的话,看错误信息,对症解决. 原文地址:https://www.c

git 中添加用户名和密码

git 中添加用户名和密码:https://blog.csdn.net/qq_28602957/article/details/52154384 在使用git时,如果用的是HTTPS的方式,则每次提交,都会让输入用户名和密码,久而久之,就会感觉非常麻烦,那么该如何解决呢? 方式一:使用SSH,添加ssh key.方式二:在全局中存储用户的账号密码,方式如下在%HOME%目录中,一般为C:\users\Administrator,也可以是你自己创建的系统用户名目录,反正都在C:\users***中

git创建分支并提交项目

git 创建分支, 切换分支, 合并分支, 删除分支及提交[commit提交到本地仓库push名利提交到远程服务器], 检出[pull], 冲突修改, 本地仓库同步远程服务器[pul和push命令l]操作 开发中常用操作 删除文件:git rm 文件名[删除本地git仓库文件, 提交后远程服务器上的文件才会消失] 查看状态:git status 添加记录:git add 文件名 或 git add . [将文件提交到远程git服务器上] 添加描述:git commit -m "描述或备注类似sv

版本控制git(三)-git分支

通过本系列的上两篇文章(查看系列文章:http://www.cnblogs.com/jerehedu/p/4607599.html#bbkz),我们已经知道了如何使用Git完成对文件的版本控制.本次我们继续学习如何通过Git进行分支管理. 首先,我们要弄明白什么是分支.通过git log 命令我们可以查看版本库的提交日志,如图: 那么这些commit之间存在什么关系呢?实际上每次commit的时候,提交对象都会保存一个指向上次一commit版本的指针,经过多次提交之后,git通过这个指针将多个提

【git】git add 添加错文件 撤销

 git add 添加 多余文件 这样的错误是由于, 有的时候 可能 git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件 git add 如果添加了错误的文件的话 撤销操作 git status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了 原文地址:https://www.cnblogs.com/aries

git仓库删除所有提交历史记录

stackoverflow原问题地址:http://stackoverflow.com/questions/13716658/how-to-delete-all-commit-history-in-github 原文:http://blog.csdn.net/yc1022/article/details/56487680 经过本人测试,如果对于大型仓库,还不如删掉远程仓库重新创建来得快,以下步骤仅仅是减少了重新创建仓库的步骤 git仓库删除所有提交历史记录,成为一个干净的新仓库 1.根据当前分支

Git项目创建与提交

创建Git密钥: 1.生成密钥: 右键–>Git Bash Here:先输入ssh-keygen –t rsa –C "邮箱地址",注意ssh-keygen之间是没有空格的,其他的之间是有空格的,邮箱地址是咱们在注册GitHub的时候用的邮箱. 生成的密钥在这里:C:\Users\Administrator\.ssh 2.将id_rsa.pub用记事本打开,复制里面全部的内容,放在GitHub的SSH Keys上: 右上头像箭头->Settings->左侧SSH an

git add 添加错文件的撤销方法

git add 添加 多余文件 这样的错误是由于,有的时候 可能 git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件 git add 如果添加了错误的文件的话 撤销操作 git status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX.html 就是对某个文件进行撤销了 原文地址:https://www.cnblogs.com/luckyXcc/p/1094

git 安装,代码提交,跨服务器SSH免密访问

vmware 准备3个服务器192.168.5.136 docker.jenkins192.168.5.137 docker.192.168.5.138 docker.192.168.5.139 docker.git.registry 1.Git安装,可通过[192.168.5.139] 多种方式,可下安装包. 这里直接yum 安装 yum install git -y 2.创建Git用户并设置密码 -- 新增用户gitu useradd gitu -- 设置用户gitu的密码 g123456