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 ...
随机推荐
- HDOj 1010 DFS优化
#include<cstdio> #include<cstring> ]={,,,-}; ]={,,-,}; ][]; int x1,y1,x2,y2; int step; i ...
- BASH相关
颜色 http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html http://segmentfault.com/q/10100000 ...
- iOS 查看系统字体效果的网页
常常需要查看字体的样式,这里推荐一个网页http://iosfonts.com,方便查阅.
- 如何破解excel宏的密码
http://zhidao.baidu.com/question/140107193.html 最近下载了一个excel模板,使用excel宏编的,但实际需要需更改一下,但是他设置了工作表密码保护,谁 ...
- Java for LeetCode 024 Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...
- DP:Skiing(POJ 1088)
北大教你怎么滑雪 题目是中文的,要读懂题目其实不难 其实这道题挺经典的,我们这样想,他最终要找到一个最大值,这个时候我们就想到要用动态规划 那怎么用呢?我们同时这样想,由于滑雪的最高点我们不能立马找 ...
- [Eclipse] Eclipse中,Add Jars与Add Library的区别
refer to : http://blog.csdn.net/gaojinshan/article/details/16948075 Eclipse中,工程属性的Java Build Path的Li ...
- fedora yum 使用代理的方法
配置yum: 编辑/etc/yum.conf添加下列一行: proxy=http://domain/user:passwd@<proxy ip>:80 <proxy ip>:代 ...
- Linux开发cocos2dx程序环境搭建
安装linux系统,ubuntu 14.04 64位 安装支持软件 sudo apt-get update sudo apt-get install git ssh vim ctags qt-sdk ...
- Redis经验谈
新浪作为全世界最大的Redis用户,在开发和运维方面有非常多的经验.本文作者来自新浪,希望能为业界提供一些亲身经历,让大家少走弯路. 使用初衷 从2010年上半年起,我们就开始尝试使用Redis,主要 ...