首页 > 其他 > 详细

GIT用法总结

时间:2014-02-23 04:11:52      阅读:397      评论:0      收藏:0      [点我收藏+]

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;

图形展示如下:

bubuko.com,布布扣

 

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中它们也许看起来就如下图

bubuko.com,布布扣
当输入git reflog命令可以看到历史commit的记录
bubuko.com,布布扣
前面的一段19433b5是每次commit产生的sha码的前8位长度的字符串,然后输入git ls-tree 19433b5 就可以看到这个tree的详细信息
bubuko.com,布布扣
上图列出了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用法总结

原文:http://www.cnblogs.com/springdong/p/3560960.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!