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用法总结的更多相关文章

  1. git用法之常用命令[克隆、提交]

    1.克隆/下载项目 1)git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git 或者 2)git clone http://git.soyd ...

  2. git用法

    chapter: 8 add 添加文件内容至索引 用法:git add [选项] [--] ... -n, --dry-run 演习 -v, --verbose 冗长输出 -i, --interact ...

  3. Bitbucket - 用git 用法

    核心流程: 从远端中心repo那里Git clone 到本地,再在本地开发(add, commit), 通常会利用branch管理,如果觉得code 没问题了,就push到远端的中心repo上.这里中 ...

  4. git用法大全

    转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始 ...

  5. git用法汇总

    使用了一年多的git命令了,昨晚竟然又出现了问题.虽然解决了,不过还是被罚了... 总结下自己常用的git命令和遇到的一些坑. 1)常用的命令 1. 从git远程分支clone代码: git clon ...

  6. git用法之常用命令

    1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...

  7. git用法之[回滚代码]

    我们在写代码的任何过程中,都有可能出错,任何过程都有可能要!回!滚!代!码!事关重大!一定要详细讲讲. 一.关于 工作区.暂存区.本地分支: 工作区:即自己当前分支所修改的代码,git add xx ...

  8. git 用法

    git init #创建仓库git add _filename #添加文件到缓冲区git commit -m "msg" #提交更新,从缓冲区提交到版本库git status #查 ...

  9. 【转】25个Git用法技巧

    Andy Jeffries 给 Git 中级用户总结分享的 25 个小贴士.你不需要去做大量搜索,或许这些小贴士对你就很有帮助的. 我从开始使用git到现在已经差不多18个月了,以为自己已经很懂git ...

随机推荐

  1. python 最佳入门实践

    勿在浮沙筑高台,无论什么技术,掌握核心精神和api,是很重要的. 但是入门过程也可能不是一帆风顺的,这里有八个入门任务,看看你完成了没有: http://code.tutsplus.com/artic ...

  2. 【OpenStack】OpenStack系列17之OpenStack私有云设计一

    [软件系统] 1.操作系统(Minimal最小化安装): CentOS-6.6-x86_64,CentOS 6最后一个版本,官方建议版本. 相对于6.5版本: 强化对 SCSI 设备的处理,有助应付某 ...

  3. 《ASP.NET MVC4 WEB编程》学习笔记------ViewBag、ViewData和TempData的使用和区别

    本文转自大卫Baby ViewBag和ViewData其实是互通的ViewBag和ViewData的区别:ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动 ...

  4. makefile文件编写

    文件转载自:http://www.cppblog.com/lapcca/archive/2010/11/26/134714.html 下面这篇文章讲的很清楚,基本的用法也很简单.   一.Makefi ...

  5. EtherCAT数据帧结构

    EtherCAT数据直接使用以太网数据帧(以太网帧解释http://blog.chinaunix.net/uid-23080322-id-118440.html)传输,使用的帧类型为0x88A4.Et ...

  6. operator new3种情况详解

    [本文链接] http://www.cnblogs.com/hellogiser/p/operator-new.html [代码]  C++ Code  12345678910111213141516 ...

  7. -fomit-frame-pointer 编译选项在gcc 4.8.2版本中的汇编代码研究

    #include void fun(void) { printf("fun"); } int main(int argc, char *argv[]){ fun(); return ...

  8. Linux下RPM、tar.gz、DEB格式软件包的区别

      初接解Linux的朋友一定对软件的安装特别头疼,同样都是for Linux,但RPM.tar.gz.DEB包还是有很大区别的,这种区别很有可能使你的安装过程进行不下去.那我们应该下载什么格式的包呢 ...

  9. ubuntu 13.10 amd64安装ia32-libs

    很多软件只有32位的,有的依赖32位库还挺严重的:从ubuntu 13.10已经废弃了ia32-libs,但可以使用多架构,安装软件或包apt-get install program:i386.有的还 ...

  10. 一、HTML和CSS基础--HTML+CSS基础课程--第2部分

    第三章 与浏览器交互,表单标签 使用表单标签,与用户交互
网站怎样与用户进行交互?答案是使用HTML表单(form).表单是可以把浏览者输入的数据传送到服务器端,这样服务器端程序就可以处理表单传过来的 ...