pro git 使用积累
http://www.zhihu.com/question/20070065 git相关问题的收集
Git 是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。
HEAD代表当前的工作树。
SHA1代表项目文件的对象名。有40位。
tag为对象标签。
在git的概念里总共有四种对象:tree、blob、commit、tag。其关系如下图:

一个重要的概念是:git与其他版本控制系统不一样的是,其它管理系统如svn采用的事增量文件系统。而git则是将每一次提交的全部内容都保存下来。这虽然占用了系统空间。但是在如今这个时代,容量已不是问题。这样做显然可以提高速度。这也是git快捷高效的一个原因。
注:一个blob就是一个内容块。它没有文件名。可能多个对象指向同一个blob。
Git 工作流程
—————————-
1、使用中央服务器辅助协作;
2、每人在服务器拥有一个以自己 id 为名称的分支;
3、各人只许推送更新到自己的分支,不允许推送到别人的分支或者 master;
4、master 由专人管理,在合适时 merge 其它分支(开发初期每日自动 merge 各人分支,生产化后则由人工 merge 经过 review 的分支);
5、代码修改 merge 到 master 后,将同步到所有终端。
Git 常用命令
——————————
1、查看blob对象内容
$ git show SHA1-BLOB
2、查看tree对象内容
$ git ls-tree SHA1-TREE(亦可以用git show)
3、查看commit对象(配合--pretty=raw可以查看详细的commit的内容
$ git show -s --pretty=raw SHA1-COMMIT
或$ git log -s --pretty=raw SHA1-COMMIT
4、一个标签对象包括一个对象名(译者注:就是SHA1签名), 对象类型, 标签名, 标签创建人的名字("tagger"), 还有一
条可能包含有签名(signature)的消息. 你可以用git cat-file 命令来查看这些信息:
- $ git cat-file tag v1.5.0
- object 437b1b20df4b356c9342dac8d38849f24ef44f27
- type commit
- tag v1.5.0
- tagger Junio C Hamano <junkio@cox.net> 1171411200 +0000
- GIT 1.5.0
- -----BEGIN PGP SIGNATURE-----
- Version: GnuPG v1.4.6 (GNU/Linux)
- iD8DBQBF0lGqwMbZpPMRm5oRAuRiAJ9ohBLd7s2kqjkKlq1qqC57SbnmzQCdG4ui
- nLE/L9aUXdWeTFPron96DLA=
- =2E+0
- -----END PGP SIGNATURE-----
5、查看索引:所谓的索引一个在你的工作目录和项目仓库间的暂存区(staging area). 有了它,
你可以把许多内容的修改一起提交(commit). 如果你创建了一个提交(commit), 那么提交的是当前索引(index)里的内容,
而不是工作目录中的内容.
$ git status
该命令可以看到哪些文件被暂存了,哪些文件被修改了但没有被暂存。哪些文件没有没有被跟踪。
6、仓库的建立:
- git clone 其支持三种协议
git clone git://url
git clone http://url
git clone name@ssh
- mkdir temp
cd temp
git init-db 初始化自己一个仓库。 - 可以通过git pull来更新仓库。
- 使用仓库前一定要敲入一下命令
git config --global user.name "your name"
git config --global user.email "your email"
如果只有一个commit则缺省与当前HEAD进行比较。
12、查看日志:
git log 选项:-p 显示具体内容 --name-only 只显示更改的文件名称
13、显示文件:
git ls-files 选项: -m 显示修改过的
14、推送的服务器:
将自上次 push 以来的,本地历次 commit,推送到服务器。结合我们的实际,应该这样写:
$ git push origin master:your-id
其中,master 是本地的分支名;your-id 填你在服务器上的 id,服务器的版本库里会有以你的id 为名称的分支。
15、创建显示分支:
$ git branch mybranch [commit-SHA1,分支状态(git show-branch 的标识),远程分支]
$ git checkout mybranch
如此便可以得到某次commit的内容分支或者跟随某一个远程分支。
单独的git branch可以用来查看分支
git branch -a可以将远程分支也显示出来。
git branch -d branch用以删除已经合并的分支
git branch -D branch强制删除分支
16、显示提交状态:
$ git show-branch
17、迁出文件:
恢复某个已修改的文件(撤销未提交的修改)
git ls-tree HEAD file 显示file在HEAD中的SHA1值。
git cat-file -t SHA1 显示一个SHA1的类型。
git cat-file type SHA1 显示一个SHA1的内容。type是blob、tree、commit、tag之一。
patch:
git format-patch -1 生成最后一个提交对应的patch文件。
git am < patch 把一个patch文件加入git仓库中。
git am --resolved 如果有冲突,在解决冲突后执行。
git am --skip 放弃当前git am所引入的patch。
clean:
git clean -dxf 用于清除未跟踪文件。
git clean -dnf 可以显示需要删除的文件,但不包括被.gitignore忽略的。
git reset --hard HEAD 用于清除跟踪文件的修改。
pro git 使用积累的更多相关文章
- Pro Git 第一章 起步 读书笔记
Pro Git 笔记 第1章 起步 1.文件的三种状态. 已提交:文件已经保存在本地数据库中了.(commit) 已修改:修改了某个文件,但还没有提交保存.(vim) 已暂存:已经把已修改的文件放在下 ...
- 《Pro Git》阅读随想
之前做版本管理,我使用最多的是SVN,而且也只是在用一些最常用的操作.最近公司里很多项目都开始上Git,借这个机会,我计划好好学习一下Git的操作和原理,以及蕴含在其中的设计思想.同事推荐了一本< ...
- Pro Git(中文版)
Pro Git(中文版) 返回 Git @ OSC 目录 1.起步 1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 安装 Git 1.5 初次运行 Git 前的配置 1.6 ...
- 《Pro Git》笔记3:分支基本操作
<Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...
- 【Tools】Pro Git 一二章读书笔记
记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: ...
- Pro Git CN Plus
Git — The stupid content tracker, 傻瓜内容跟踪器.Linus 是这样给我们介绍 Git 的. Git 是用于 Linux 内核开发的版本控制工具.与常用的版本控制工具 ...
- 《Pro git》
可以通过阅读 CODING 工程师参与翻译的 <Pro Git> 进一步掌握 Git 版本控制系统. https://git-scm.com/book/zh/v2
- 《Pro Git》轻松学习版本控制
转自 https://kindlefere.com/post/333.html 什么是“版本控制”?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.在 ...
- [Git00] Pro Git 一二章读书笔记
记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: ...
随机推荐
- PS转换图片——我教你
将图片转换为web格式所有格式,选png8 或者gif 16位
- 50个提高PHP编程效率的方法
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册 ...
- “耐撕”团队第一次讨论——“抢答器”需求分析
团队名称:"耐撕" 团队成员:齐嘉亮.刘伟硕.濮成林.郑蕊 项目名称:"抢答器"(有待改善) 第一次讨论 时间:20160316 地点:软件所 人员:全体 内容 ...
- tomcat服务器上webapps里的文件名和项目名称不一样,修改方法
第一种方法:打开工程所在目录,找到一个 .mymetadata的文件,用记事本等打开,内容大致如下: <?xml version="1.0" encoding="U ...
- Calender的使用详解
Calendar和GregorianCalendar简介 Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法.所以为了计时的统一,必需指定一个日历的选择.那现在最为普及和通用的日历 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
- 【CodeForces 557B】Pasha and Tea
题 题意 总共有 w 克蛋糕,2n 个盘子,第 i 个盘子容量为 ai ,n 个女孩和 n 个男孩,男孩得到的是女孩得到的蛋糕的两倍,求他们得到蛋糕的最大值. 分析 把盘子从小到大排序,然后 女生得到 ...
- SourceTree&Git部分名词解释
SourceTree&Git部分名词解释 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓 ...
- BIEE 配置邮箱服务器
找个免费邮件服务器126或者163的 登录em地址,点击“部署”——>“邮件”——>“锁定并编辑”——>应用——>激活更改——>重新启动以应用最近更改——>重新启动 ...
- myeclipse 配置weblogic
1.打开myeclipse,选择Window -> Preferences--->MyEclipse--->servers 2.点击servers---->weblogic-- ...