企业中在多人的项目开发环境下,使用Git 版本控制工具对项目版本进行管理时,一般会对项目不一样版本的文件进行查看,项目历史版本,将来版本的切换操做,对于一个项目开发人员,此时对于Git 的这些基本命令操做就成为了一项基本技能。git
修改后内容以下:算法
此时当文件修改后 使用 git status
命令能够看到git 检测到文件被修改,git 版本库给出的下一步操做是添加修改的文件到暂存区 此时执行添加操做命令ide
执行提交工具
git log
命令查看操做日志记录版本控制
修改须要注意的问题
指针
下面再次修改git01.txt 而后执行提交操做日志
此时 执行 git diff HEAD -- git01.txt
与版本库内容进行比较结果以下:code
差别比较说明 `---`:表示变更前的文件 `+++`:表示变更后的文件 变更的位置用两个@做为起首和结束 @@ -1,2 +1,3 @@:减号表示第一个文件,"1"表示第1行,"2"表示连续2行。一样的,"+1,3"表示变更后,成为第二个文件从第1行开始的连续3行。
能够看出:文本中第三行内容并无提交到版本库中 缘由在于修改后的git01.txt 并无添加到暂存区,全部执行提交操做并不会发生改变。blog
暂存区文件提交与撤销
排序
当发现因失误而将文件添加到暂存区时,git 支持文件的撤销操做 执行命令 git reset HEAD 文件
操做以下:
再次查看版本库状态 test.txt 成为未追踪文件
当文件修改后被提交的次数不少时,对于版本库中存放的文件就会出现不一样的版本,在多人开发的项目环境中,一般会对不一样版本文件进行查看甚至回退的状况(好比某些游戏中所提供的状态保存功能,可以在某一时刻保存整个游戏场景状态以方便后续继续在该状态下进行游戏进行而不是从头开始),值得庆幸的是 Git 也提供了一样的功能,可以让开发者在不一样版本的项目中进行切换,达到时空穿梭自如的目的!
对于上面操做的git01.txt 文件已有几个版本,对于历史版本的查看 使用git log
命令:
git log:命令用于显示提交日志信息
列表显示的结果按提交时间倒叙排序,其中第一条中 HEAD -> master
表明当前指针指向Git 版本库中master 主干分支,每次提交 Git 内部均会生成一个惟一的SHA 算法构建的字符串来惟一标识当前版本
此时若是想要执行版本版本回退操做使用命令 git reset
git reset 命令用于将当前HEAD复位到指定状态。通常用于撤消以前的一些操做(如:git add,git commit等)。
回滚前在执行两次提交操做 方便文件不一样版本间的切换
第三次提交 修改后的git01.txt 内容以下:
第四次提交 修改后的git01.txt 内容以下:
git log
查看提交历史记录以下
固然,若是提交历史记录较多 能够加入数字控制显示的版本记录数 而且使用--pretty=oneline
简化输出 以下:
显示最近三次提交
切换版本前 git01.txt 内容以下:
回退到上一版本
执行 git reset --hard HEAD^
HEAD^:将指针指向上一个版本,若是是上上一个就是 HEAD^^,上上上一个HEAD^^^,但这样记就比较麻烦,若是回退版本较多,简写为 HEAD~100 往前回退100个版本 ~后跟数字便可
查看回退后的git01.txt内容以下:
回退操做已经完成,但此时若是想要回到将来的版本即最新的版本怎么办呢? 其实这里也比较简单,前面说到针对提交后的版本库,每一个版本均会有一个惟一标识,这里找到对应版本标识便可完成回到将来版本的操做 以下
执行git reset 命令以下:
若是此时回到某一个版本后直接关闭了当前git 命令窗口 怎么样才能回到将来版本呢?由于此时将来版本的惟一标识id 在窗口中看不到了!
值得庆幸的是,Git早已为你想到了这种状况,Git提供了一个命令git reflog
用来记录用户操做的每一次命令,效果以下:
git reflog:查看记录在本地的HEAD和分支引用在过去指向的位置。
在Git中,删除文件一样是一个修改操做,即在Git世界中,Git仅仅关注文件是否被修改(文件添加,更新,删除)
在工做区添加新文件git02.txt 内容以下:
将文件添加到版本库
文件提交到版本库后,在工做目录执行手动删除操做后执行git status
命令能够看到Git 可以追踪到文件被删除状况,注意此时版本库中文件并无被删除,只是工做目录中文件被删除!
若是此时发现文件是被误删除呢,不用担忧,这里能够将误删除的文件从新从版本库中检出,执行命令:
git checkout -- 文件名
若是肯定是要执行删除操做 执行git rm 命令便可
字这种字