Git学习(一)
2016-07-19 23:01
253 查看
git是一个分布式版本控制系统,它的诞生起源于Linux的创建者Linus,和SVN等集中式版本控制系统不同的是,分布式版本控制系统没有中央服务器,每个人的电脑上都是一个完整的版本库,不过git最强大的是它的分支管理。
git init命令 把一个普通的目录变成git可以管理的仓库
所有的版本控制系统,都只能跟踪文本文件的改动。版本控制可以告诉你每次文件的改动的具体信息。而图片等二进制文件,虽然也可以由版本控制系统管理,但是没法跟踪文件的变化。只能把二进制文件的每次改动串联起来,比如一个图片从100K到200K。但是不知道具体改变了什么。(word也是二进制格式的。因此没法跟踪word文件的改动)。
把一个普通文件放到git仓库,有两个步骤:
①用git add命令告诉git,把一个普通文件添加到git仓库。多个文件以空格分开。
②用命令git commit告诉git,把文件提交到仓库.
提交时可以加入参数:git commit -m “info” ,info是本次提交的说明,表明修改了什么。也可以不加参数不过强烈建议加上参数。
需要两步的好处是,有时候需要添加多个文件,这样可以等都添加到仓库之后,一次性commit。
git status命令可以时刻掌握仓库当前的状态。
git status虽然可以查看文件的状态,但是只能知道文件被修改了,具体修改了什么仍然不清楚。可以使用git diff命令查看具体修改了什么内容。
如上图所示,-号的行显示该行被修改之前的内容,+号的行显示的是改行修改后的内容。
前面说过,git可以对仓库中的文件进行跟踪,也可以在需要的时候进行“还原”。如果你频繁地修改一个文件然后不断地提交到仓库中。一旦你发现把文件改乱了或者误删了文件,可以从最近的一个commit处开始恢复。可以用git log 命令查看从最近到最远的提交日志。
最上面的是最近一次的提交记录,黄色的一大串字符是每次的commit id。如果觉得日志信息太多,可以加上–pretty=oneline参数,每次提交记录只显示一行,即commit id和提交时输入的信息。
现在我们知道了每次的提交记录,假如我想会退到最初的add test的那个版本,该如何做呢?首先我们必须要知道这个文件当前的版本是哪个版本,GIT中用HEAD表示当前版本即最新提交的那个版本,我这里就是delete row的版本,上一个版本就是HEAD^ ,上上一个版本是HEAD^^。
现在我要回退到最初的add test的版本,可以使用git reset命令:git reset –hard HEAD^^
现在看到当前版本已经变成add test的版本。这时候再用 git log命令查看现在版本库的状态:
发现delete row和add some number这两个版本已经没有了。日志从你回退到的那个版本开始显示,回退版本之前的日志会继续显示,回退版本之后的日志就不再显示。
但是如果又想回到add some number的那个版本怎么办呢?只要命令行窗口没有关闭,你就可以顺着往上找,前提是你要知道那个版本的commit id,commit id没必要写全,写前几位就可以了,git会自动查找。
注意:如果关闭了命令行窗口,或者某天之后又想回退到某个版本但是不知道commit id该怎么办呢?这时候可以用git reflog查看git命令历史,
如上图所示,可以看到每次commit的commit id(最前面的字符串),这样我们就又可以回到任意版本了。
git init命令 把一个普通的目录变成git可以管理的仓库
所有的版本控制系统,都只能跟踪文本文件的改动。版本控制可以告诉你每次文件的改动的具体信息。而图片等二进制文件,虽然也可以由版本控制系统管理,但是没法跟踪文件的变化。只能把二进制文件的每次改动串联起来,比如一个图片从100K到200K。但是不知道具体改变了什么。(word也是二进制格式的。因此没法跟踪word文件的改动)。
把一个普通文件放到git仓库,有两个步骤:
①用git add命令告诉git,把一个普通文件添加到git仓库。多个文件以空格分开。
②用命令git commit告诉git,把文件提交到仓库.
提交时可以加入参数:git commit -m “info” ,info是本次提交的说明,表明修改了什么。也可以不加参数不过强烈建议加上参数。
需要两步的好处是,有时候需要添加多个文件,这样可以等都添加到仓库之后,一次性commit。
git status命令可以时刻掌握仓库当前的状态。
git status虽然可以查看文件的状态,但是只能知道文件被修改了,具体修改了什么仍然不清楚。可以使用git diff命令查看具体修改了什么内容。
如上图所示,-号的行显示该行被修改之前的内容,+号的行显示的是改行修改后的内容。
前面说过,git可以对仓库中的文件进行跟踪,也可以在需要的时候进行“还原”。如果你频繁地修改一个文件然后不断地提交到仓库中。一旦你发现把文件改乱了或者误删了文件,可以从最近的一个commit处开始恢复。可以用git log 命令查看从最近到最远的提交日志。
最上面的是最近一次的提交记录,黄色的一大串字符是每次的commit id。如果觉得日志信息太多,可以加上–pretty=oneline参数,每次提交记录只显示一行,即commit id和提交时输入的信息。
现在我们知道了每次的提交记录,假如我想会退到最初的add test的那个版本,该如何做呢?首先我们必须要知道这个文件当前的版本是哪个版本,GIT中用HEAD表示当前版本即最新提交的那个版本,我这里就是delete row的版本,上一个版本就是HEAD^ ,上上一个版本是HEAD^^。
现在我要回退到最初的add test的版本,可以使用git reset命令:git reset –hard HEAD^^
现在看到当前版本已经变成add test的版本。这时候再用 git log命令查看现在版本库的状态:
发现delete row和add some number这两个版本已经没有了。日志从你回退到的那个版本开始显示,回退版本之前的日志会继续显示,回退版本之后的日志就不再显示。
但是如果又想回到add some number的那个版本怎么办呢?只要命令行窗口没有关闭,你就可以顺着往上找,前提是你要知道那个版本的commit id,commit id没必要写全,写前几位就可以了,git会自动查找。
注意:如果关闭了命令行窗口,或者某天之后又想回退到某个版本但是不知道commit id该怎么办呢?这时候可以用git reflog查看git命令历史,
如上图所示,可以看到每次commit的commit id(最前面的字符串),这样我们就又可以回到任意版本了。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- 6 个托管 git 仓库的地方
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- git多账号登录问题解析
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git 使用及常用命令
- git eclipse 插件的安装
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结