Git 基本操作1--修改提交(add,commit)
2017-02-16 10:31
411 查看
上一篇讲解了创建仓库过程,其实就已经正式进入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使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改
- Git基本操作(add,commit的理解)
- MAC 基本命令操作git 修改 提交 更新
- 查找删除Code First Entity Framework基本与最佳添加(add/create),删除(delete/remove),修改(update/modify)操作
- Git 在提交之前撤销add操作
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- git 基本使用,初始化本地仓库,创建文件,add文件,commit文件,git版本穿梭
- Git使用基本方法(从远程服务器获取分支,提交修改)
- git基本命令--status, add, diff, commit, log
- git整理commit的基本方法(拆分、合并、修改commit)
- git 在提交之前撤销add操作
- git commit -a -m 'xx' 不会提交 没有add进来的文件新建文件
- GIT 在提交之前撤销add操作
- 第一次使用git,撤销git add操作 (undo git add before commit)
- Git gerrit 提交代码Review 返回后修改步骤 以及git操作
- 在commit之前撤销git add操作 (undo git add before commit)
- git使用:如何进行版本回退或只是修改已提交的commit
- 在commit之前撤销git add操作 (undo git add before commit)
- git 在提交之前撤销add操作