Git 常用命令 小总结
2015-10-20 12:07
190 查看
先安利廖雪峰的官网,里面有详细的Git教程和热闹的评论探讨。
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
本文也是在上网站学习后整理出对应的命令 以备查询时使用。
- 创建版本库
git init
- 查看版本日志,显示从最近到最远的提交日志
git log
--pretty=oneline 参数结果以单行形式显示
- 添加文件到仓库
git add <file>
- 提交修改到仓库
git commit -m “message"
- 查看仓库状态,可以让我们时刻掌握仓库当前的状态
git status
- 查看不同,查看difference,显示的格式正是Unix通用的diff格式
git diff <file>
- 版本回退
git reset --hard commit_id
HEAD
当前版本
HEAD^
上一个版本
HEAD^^ 上上一个版本
HEAD~100 上一百个版本
- 查看已经执行的命令
git reflog
- 撤销文件,把<file>文件在工作区的修改全部撤销
git checkout -- <file>
这里有两种情况:
一种是<file>自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是<file>已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次
**注意:
- 撤销已经add到暂存区的文件,可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD <file>
- 删除文件,删除后记得git commit
git rm
- Git仓库分为工作区和版本库, 版本库分为暂存区和HEAD区
当我们对文件进行修改的时候,修改的是工作区。
执行add就是把本次工作区的修改提交到暂存区,可以提交多次修改。
执行commit就是把暂存区的所有修改提交到HEAD。
所以从工作区提交到HEAD,需要add和commit两个操作才行。
看到评论区有人对工作区,stage区和master区之间的关系和命令在不同区域作用的讨论。
这里写上我的理解...很大可能是不标准甚至有可能就是错误的...不过至少在前面这些命令的执行的理解来说没有太大问题。
工作区 - 是本地修改的文件区域,是我们直接操作的区域,所有的文件修改都是在这个区域里面
stage区 - 是版本库区,暂存工作区已经提交的修改信息,执行add,rm等文件级别的操作,都是针对这个区进行的
master区 - 是版本库区,保存已经提交的各个版本信息,执行commit就是要对这个区来操作
git保存在版本库中的都是修改信息,而不是整个文件的副本。
所以我们执行了add操作,其实就是告诉stage区添加一条add的信息,而执行rm则是告诉stage区添加了一条rm的信息。事实上所有文件的变动都是在离我们最近的工作区呈现的。
所以我们恢复暂存区的文件A,其实就是把暂存区文件A的修改信息删掉,这里删掉的都是修改信息,相对工作区并没有变动。这就是为什么恢复了暂存区后本地文件还是处于改动的状态,需要我们继续执行add或者rm或者其他命令来进行后续操作。
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
本文也是在上网站学习后整理出对应的命令 以备查询时使用。
- 创建版本库
git init
- 查看版本日志,显示从最近到最远的提交日志
git log
--pretty=oneline 参数结果以单行形式显示
- 添加文件到仓库
git add <file>
- 提交修改到仓库
git commit -m “message"
- 查看仓库状态,可以让我们时刻掌握仓库当前的状态
git status
- 查看不同,查看difference,显示的格式正是Unix通用的diff格式
git diff <file>
- 版本回退
git reset --hard commit_id
HEAD
当前版本
HEAD^
上一个版本
HEAD^^ 上上一个版本
HEAD~100 上一百个版本
- 查看已经执行的命令
git reflog
- 撤销文件,把<file>文件在工作区的修改全部撤销
git checkout -- <file>
这里有两种情况:
一种是<file>自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是<file>已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次
git commit或
git add时的状态。
**注意:
git checkout -- file命令中的
--很重要,没有
--,就变成了“切换到另一个分支”的命令
- 撤销已经add到暂存区的文件,可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD <file>
- 删除文件,删除后记得git commit
git rm
- Git仓库分为工作区和版本库, 版本库分为暂存区和HEAD区
当我们对文件进行修改的时候,修改的是工作区。
执行add就是把本次工作区的修改提交到暂存区,可以提交多次修改。
执行commit就是把暂存区的所有修改提交到HEAD。
所以从工作区提交到HEAD,需要add和commit两个操作才行。
看到评论区有人对工作区,stage区和master区之间的关系和命令在不同区域作用的讨论。
这里写上我的理解...很大可能是不标准甚至有可能就是错误的...不过至少在前面这些命令的执行的理解来说没有太大问题。
工作区 - 是本地修改的文件区域,是我们直接操作的区域,所有的文件修改都是在这个区域里面
stage区 - 是版本库区,暂存工作区已经提交的修改信息,执行add,rm等文件级别的操作,都是针对这个区进行的
master区 - 是版本库区,保存已经提交的各个版本信息,执行commit就是要对这个区来操作
git保存在版本库中的都是修改信息,而不是整个文件的副本。
所以我们执行了add操作,其实就是告诉stage区添加一条add的信息,而执行rm则是告诉stage区添加了一条rm的信息。事实上所有文件的变动都是在离我们最近的工作区呈现的。
所以我们恢复暂存区的文件A,其实就是把暂存区文件A的修改信息删掉,这里删掉的都是修改信息,相对工作区并没有变动。这就是为什么恢复了暂存区后本地文件还是处于改动的状态,需要我们继续执行add或者rm或者其他命令来进行后续操作。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令
- Git 常用命令速查表(图文+表格)
- mac git xcrun error active developer path 错误