GIT用法总结
1 git中的几种文件状态
a 未被git跟踪的文件,即是没有使用git add添加到git索引的的文件:untracked;
b 没有修改但是已经被git跟踪的文件,即是使用git add添加到git索引的的文件:unmodified;
c 已经修改但是没有提交到暂存区的文件,这个文件也有两个去处,通过”git add”可进入暂存(staged)状态,
使用”git checkout”则丢弃修改,返因到unmodify状态:modified;
d 已经通过git commit提交到暂存区的状态,这时库中的文件与本地文件又一致了,于是文件是unmodify状态。
执行”git reset HEAD filenam”取消暂存,文件状态变为modified:staged;
图形展示如下:

2 git中的四种对象
a blob:用来存储文件数据,就是一个通常的文件。
b tree:看起来象一个目录结构,它引用了一串其他的tree或者blob(就像文件和子目录一样)。
c commit:指向一个单独的tree,标志着一个项目在一个特定的时间点看起来是什么样子。它包含了那一时间点的元信息,比如时间戳、作者、自从上次提交以来所做的改变、指向前一次提交的引用,等等。
d tag:是用特定的方法标识特定的提交。它通常用来标记特定的commit作为特定的release,或者这条主线上的其他的什么东西。
如果我们一个小项目, 有如下的目录结构:
$>tree
.
|-- README
`-- lib
|-- inc
| `-- tricks.rb
`-- mylib.rb
2 directories, 3 files
如果我们把它提交(commit)到一个Git仓库中, 在Git中它们也许看起来就如下图

当输入git reflog命令可以看到历史commit的记录

前面的一段19433b5是每次commit产生的sha码的前8位长度的字符串,然后输入git ls-tree 19433b5 就可以看到这个tree的详细信息

上图列出了tree 19433b5的一些情况 或者可以输入git ls-tree -r 19433b5 则会递归显示根目录下面所有的文件的信息
每一次的commit都会从根tree开始记录目录中的文件的变化情况
可以参考 http://gitbook.liuhui998.com/1_2.html
3 git常用命令
a 获得远程服务器中的某个git仓库使用git clone命令
$ git clone git://git.kernel.org/pub/scm/git/git.git 如果在命令后面添加 my-git则会用my-git目录替换git的目录
b 初始化一个本地仓库
$ git init name
初始化一个名字为name的本地裸仓库 进入name文件夹会看到有一个.git的隐藏目录,存放当前仓库的所有数据文件
c 让git开始跟踪文件,添加到git的索引中:git add
这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等
$ git add . # 將資料先暫存到 staging area, add 之後再新增的資料, 於此次 commit 不會含在裡面.
$ git add filename #将filename文件添加到git index中
$ git add modify-file # 修改過的檔案, 也要 add. (不然 commit 要加上 -a 的參數)
$ git add -u # 只加修改過的檔案, 新增的檔案不加入.
$ git add -i # 進入互動模式
d 将处于staging area的文件提交到本地:git commit
$ git commit -m 'commit message'
$ git commit -a -m 'commit -message' # 將所有修改過得檔案都 commit, 但是 新增的檔案 還是得要先 add.
$ git commit -a -v # -v 可以看到檔案哪些內容有被更改, -a 把所有修改的檔案都 commit
e 删除文件
$ git rm filename #从工作目录删除某个文件并解除git对该文件的跟踪
$ git rm --cached filename #解除git对该文件的跟踪但是不删除该文件
f 修改档案名
$ git mv filename new-filename
g 查看目前分支状态
$ git status
h 撤销某个文件的修改
$ git checkout filename #将filename的内容还原为暂存区中对应文件的内容 注意这里还原的不是某个commit版本中的内容
$ git reset --hard commited_id
GIT用法总结的更多相关文章
- git用法之常用命令[克隆、提交]
1.克隆/下载项目 1)git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git 或者 2)git clone http://git.soyd ...
- git用法
chapter: 8 add 添加文件内容至索引 用法:git add [选项] [--] ... -n, --dry-run 演习 -v, --verbose 冗长输出 -i, --interact ...
- Bitbucket - 用git 用法
核心流程: 从远端中心repo那里Git clone 到本地,再在本地开发(add, commit), 通常会利用branch管理,如果觉得code 没问题了,就push到远端的中心repo上.这里中 ...
- git用法大全
转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始 ...
- git用法汇总
使用了一年多的git命令了,昨晚竟然又出现了问题.虽然解决了,不过还是被罚了... 总结下自己常用的git命令和遇到的一些坑. 1)常用的命令 1. 从git远程分支clone代码: git clon ...
- git用法之常用命令
1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...
- git用法之[回滚代码]
我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲. 一.关于 工作区.暂存区.本地分支: 工作区:即自己当前分支所修改的代码,git add xx ...
- git 用法
git init #创建仓库git add _filename #添加文件到缓冲区git commit -m "msg" #提交更新,从缓冲区提交到版本库git status #查 ...
- 【转】25个Git用法技巧
Andy Jeffries 给 Git 中级用户总结分享的 25 个小贴士.你不需要去做大量搜索,或许这些小贴士对你就很有帮助的. 我从开始使用git到现在已经差不多18个月了,以为自己已经很懂git ...
随机推荐
- [转]Ubuntu 系统 Update-rc.d 命令
本文转自:http://wangyan.org/blog/ubuntu-update-rc-d.html 以防止原博客挂掉,特此做了备份. Ubuntu或者Debian系统中update-rc.d命令 ...
- 在CentOS 6.4中编译安装gcc 4.8.1
在CentOS 6.4中编译安装gcc 4.8.1 分类: C/C++ Linux/Unix2013-11-28 21:02 1877人阅读 评论(0) 收藏 举报 原文链接:http://www.c ...
- linux之eval用法(高级bash程序员的必修之技)
1. eval command-line 其中command-line是在终端上键入的一条普通命令行.然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次.如: pipe=&qu ...
- 对 Linux 新手非常有用的 20 个命令
参考:http://www.oschina.net/translate/useful-linux-commands-for-newbies 英文原文:http://www.tecmint.com/us ...
- iOS UIBezierPath知识介绍
UIBezierPath是在画图,定制动画轨迹中都有应用. UIBezierPath有许多类方法,能够创建基本的曲线,比如利用一个rect创建一个椭圆path的方法:bezierPathWithOva ...
- 手动创建第一个JSP应用
当按照上一篇文章所说的,配置好了tomcat服务器之后,我们就可以开发运行在tomcat上的第一个web应用了,在对tomcat的目录了解之后,我们知道webapps是存放我们编写相应应用程序的目录, ...
- JSON和GSON操作json数据
1,JSON操作json import net.sf.json.JSONArray; import net.sf.json.JSONObject; //json操作数据 public static S ...
- python基础——递归函数
python基础——递归函数 递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用 ...
- !!!四种常见的 POST 提交数据方式(含application/json)
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...
- WPF中的常用类汇总:
1.FrameworkElement: WPF中大部分的控件都可以转化成FrameworkElement,利用FrameworkElement属性获取相应的值: 2.WPF获取当前工作区域的宽度和高度 ...