上一篇讲解了创建仓库过程,其实就已经正式进入git管理了,今天就正式讲解日常基本操作。 来个小插曲:作为程序员,最怕的就是客服,测试,产品那边来找咱们:andorid客户端请求异常啦,ios那边闪退啦,谁也不想自己做的产品出bug。
【Git|Git 基本操作1--修改提交(add,commit)】 当然有一部分人心想:我去,终于来bug了,终于又可以借机跟测试的妹子聊天了,如果公司有程序员鼓励师,我愿意天天给自己没事提bug。可惜
没有鼓励师啊。扯远了,其实有bug正常,没人保证写的程序很完美,即使没bug,我们也要不断的优化自己的代码,这势必就要修改代码等,
而git呢,本身其实就是管理的修改。下面我们就直接上实例讲解吧,看看git是如何管理修改的。
1.我在本地单独创建了一个文本addme.txt,里面添加了一行内容
zxdeMacBook-Pro:git_project zs$ cd work
zxdeMacBook-Pro:work zs$ ls -a
....gitaddme.txtzxdeMacBook-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
文件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 ..." 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之前三种状态的分析,以便大家深入理解这些,免得遇到时感到困惑。
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 diffHEAD -- 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,可以自己找实例试试。
推荐阅读
- transformer|Swin-Transformer代码讲解-Video Swin-Transformer
- git使用技巧备忘(持续更新。。。)
- git 高级操作
- 同步GIT仓库的操作 -- pull命令
- git|git简单命令
- Git|Tomcat 自定义错误页面(例如404页面等等)
- 本地项目添加到gitee仓库管理
- centos|搭建Git服务器
- Git clone~fatal: protocol '?http' is not supported。解决办法。
- github开通,史上最全demo集合,各种demo持续更新中