来个小插曲:作为程序员,最怕的就是客服,测试,产品那边来找咱们: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 ..." 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
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 ..." to unstage)
new file: addme.txt
zxdeMacBook-Pro:work zs$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: addme.txt
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." 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之前三种状态的分析,以便大家深入理解这些,免得遇到时感到困惑。
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 . ,git commit -m 。两者还嫌繁琐就 git commit -am "修改说明"
最后的总结:我们在了解git如何跟踪文件修改的时候,只要记住两点。修改只有add到暂存区,才会加入到commit,才会提交到分支。今天主要讲了git add,git commit,git status,git diff,可以自己找实例试试。