您的位置:首页 > 其它

Git 基本操作1--修改提交(add,commit)

u010697394 2017-02-16 10:31 75 查看


上一篇讲解了创建仓库过程,其实就已经正式进入git管理了,今天就正式讲解日常基本操作。

来个小插曲:作为程序员,最怕的就是客服,测试,产品那边来找咱们:andorid客户端请求异常啦,ios那边闪退啦,谁也不想自己做的产品出bug。

当然有一部分人心想:我去,终于来bug了,终于又可以借机跟测试的妹子聊天了,如果公司有程序员鼓励师,我愿意天天给自己没事提bug。可惜

没有鼓励师啊。扯远了,其实有bug正常,没人保证写的程序很完美,即使没bug,我们也要不断的优化自己的代码,这势必就要修改代码等,

而git呢,本身其实就是管理的修改。下面我们就直接上实例讲解吧,看看git是如何管理修改的。

1.我在本地单独创建了一个文本addme.txt  ,里面添加了一行内容

zxdeMacBook-Pro:git_project zs$ cd work
zxdeMacBook-Pro:work zs$ ls -a
.		..		.git		addme.txt

zxdeMacBook-Pro:work zs$ cat addme.txt
GIT records your name and email address


执行git status,其中 ****git
status 命令用于查看项目的当前状态。

zxdeMacBook-Pro:work zs$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
addme.txt
nothing added to commit but untracked files present (use "git add" to track)


说明:在修改后,查看状态,可以看到,Git提示addme.txt为“Untracked files”,并且提示使用“git add <file>...”的命令将文件包含到待提交清单中。按照提示,使用“git add
addme.txt”命令,然后,使用“git status”查看:

zxdeMacBook-Pro:work zs$ git add addme.txt
zxdeMacBook-Pro:work zs$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file:   addme.txt


文件addme.txt状态变成了“Changes to be committed”,也就是说addme.txt在暂存区域生成了快照(以前讲过git add 是把修改提交到暂存区),等待被提交。正如Git所提示的那样,通过“git rm --cached addme.txt”命令,可以将文件状态还原为未暂存状态,即回到“Untracked files”文件状态。现在,addme.txt已经可以被提交到git目录中了,但是暂时不提交。继续想addme.txt修改内容,之后用“git
status”查看:

zxdeMacBook-Pro:work zs$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file:   addme.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified:   addme.txt


可以看到,除了之前的“Changes to be committed”状态,下面又多了一条“Changes not staged for commit”状态,表明文件已经修改,但是还没有放入暂存区域,也就是没生成快照。如果现在进行commit操作,只是将修改之前的文件快照提交到了git目录,最近的修改则不会提交,一定记住:只有暂存区域的文件(即:文件状态为“Changes to be committed”)才会被提交。正如提示,通过“git add addme.txt”命令将已修改文件更新到暂存区域中,如果想撤销修改,可以使用“git
checkout -- addme.txt”命令。那就执行git checkout  -- addme.txt看一下是否恢复

zxdeMacBook-Pro:work zs$ git checkout -- addme.txt
zxdeMacBook-Pro:work zs$ cat addme.txt
GIT records your name and email address


经验证确实恢复了修改。

 

通过上边实例分析,Git在未进行commit操作之前,存在三种状态:Untracked files,Changes not staged for commit及Changes to be committed,每种状态之间可以随意进行互相转换。了解这三种状态各自所对应的不同情况,能够帮助你方便有效的使用Git来管理项目。
上边顺便插入了commit之前三种状态的分析,以便大家深入理解这些,免得遇到时感到困惑。

2.上边的过程已经讲解了git add 命令的详细使用。

3.接着继续提交,使用 git commit -m "提交说明"

此例我们继续执行git commit -m "addme.txt add"

zxdeMacBook-Pro:work zs$ git commit -m "addme.txt add"
[master (root-commit) e6e0647] addle.txt add
1 file changed, 2 insertions(+)
create mode 100644 addme.txt
zxdeMacBook-Pro:work zs$ git status
On branch master
nothing to commit, working directory clean
zxdeMacBook-Pro:work zs$


4.我们用git diff  HEAD -- addme.txt,来查看工作区与版本库文件的区别

zxdeMacBook-Pro:work zs$ git diff HEAD -- addme.txt
diff --git a/addme.txt b/addme.txt
index b92c635..2d49a86 100644
--- a/addme.txt
+++ b/addme.txt
@@ -1,2 +1,3 @@
GIT records your name and email address
+git add


其中+git add就是工作区未add到暂存区的修改

补充:实际工作中我们会遇到一个文件修改好几次,也同时修改多个文件。这时候总不能一个修改一次add 到暂存区,在commit到分支,也不提倡。针对一个文件的修改你最终改完执行add,在commit,多个文件,你可以执行 git add .(注意add 后边的符号 点),在git commit -m ""。

概述为:git add . ,git commit -m 。两者还嫌繁琐就 git commit -am "修改说明"

最后的总结:我们在了解git如何跟踪文件修改的时候,只要记住两点。修改只有add到暂存区,才会加入到commit,才会提交到分支。今天主要讲了git add,git commit,git status,git diff,可以自己找实例试试。
标签:  Git 提交 Untracked files