本文暂时不会涉及到团队如何使用Git的内容,而是从个人的角度探讨如何用好Git。
约定
绿色的5位字符表示提交的ID,文中用<commit>表示,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的标识。 这张图片里显示最后5次提交,是最新提交。分支指向此次提交,另一个分支指向祖父提交节点。
git cat-file
git cat-file -t <commit>,查看Git对象的类型,主要的git对象包括tree,commit,parent,和blob等。
git cat-file -p <commit>,查看Git对象的内容
git log
git log主要用来显示分支中提交更改的记录。当执行git commit以存储一个快照的时候,文件详单、提交消息和提交者的信息、此次提交所基于的快照都会被保存。
git log --oneline,可以显示更加短小的提交ID.
git log --graph,显示何时出现了分支和合并等信息.
git log --pretty=raw,显示提交对象的parent属性.
git config
git config -e
git config -e --global
git config -e --system
Git的三个配置文件分别是版本库级别的配置文件(/.git/config)、全局配置文件(用户主目录下)和系统级配置文件(/etc目录下)。这个命令的作用是打开相应的配置文件,并且进行编辑。其中版本库级别的配置文件的优先级最高,全局配置文件次之,系统级别配置文件最低。Git配置文件采用的是INI文件格式。
git config <section>.<key>,读取和更改INI配置文件的内容。
git config <section>.<key> <value>,修改INI配置文件中某个配置的键值
在全局空间中添加新的用户
git config --global user.name "harvey liu"
git config --global user.email harvey_liu@163.com
设置git命令的别名
git config --global alias.ci commit
git config --global alias.co checkout
删除git全局配置文件中的用户名
git config --unset --global user.name
git config --unset --global user.email
git grep
git grep可以用来搜索工作区中的文件内容
要查找git仓库里某个特定版本里的内容, 我们可以像下面一样在命令行末尾加上标签名(tag reference),git grep '文字内容' v1.0
git diff
git diff,显示工作区和暂存区的差异
git diff HEAD,显示工作区和HEAD之间的差异
git diff --cached,显示暂存区和HEAD之间的差异
git diff id1 id2,显示两次提交之间的差异
git status
git status,查看你的代码在缓存与当前工作目录的状态
git status -s,将结果以简短的形式输出
git add
git add,在提交你修改的文件之前,你需要把它们添加到暂存区。如果该文件是新创建的,你可以执行将该文件添加到暂存区
git add . ,Git会递归地将你执行命令时所在的目录中的所有文件添加上去,所以如果你将当前的工作目录作为参数,它就会追踪那儿的所有文件
git add -u,使用-u参数调用了git add命令,会将本地有改动(包括删除和修改)的已经追踪的文件标记到暂存区中。
git add -A,使用-A参数会将添加所有改动的已跟踪文件和未跟踪文件。
git add -i,交互式的方式进行添加。
git commit
git commit --amend,修补式提交。
git commit --a,对本地所有变更的文件执行提交操作,包括对本地修改的文件和删除的文件,但是不包括未被版本库跟踪的文件。但是这个命令最好不要使用,这样会丢掉Git暂存区带给用户的最大好处:对提交内容进行控制的能力
git commit --allow-empty,允许执行空白提交
git reset
把当前分支指向另一个位置,并且有选择的变动工作目录和索引
git reset --hard <commit>,其中commit是可选项,可以使用引用或者提交ID,如果省略则相当于使用了HEAD的指向作为提交ID,完成的操作包括替换引用的指向,替换暂存区,替换工作区
git reset --soft <commit>,其中commit是可选项,可以使用引用或者提交ID,如果省略则相当于使用了HEAD的指向作为提交ID。完成的操作主要是更改引用的指向,不改变暂存区和工作区
git reset,等同于git reset HEAD,用HEAD指向的目录树重置暂存区
git reset -- filename,将文件filename的改动撤出暂存区,暂存区其他文件不变
git reset HEAD --filename 等同于git reset -- filename
git branch
git branch,显示当前所在的分支
git branch <branchname>,创建新的分支branchname
git branch -d <branchname> ,删除名称为branchname的分支
git checkout
git checkout branchname,会改变HEAD头指针,主要用于切换分支
git checkout -b branchname,用于创建一个新的分支,并且切换到创建的新的分支上
git checkout --filename,用暂存区中的filename文件来覆盖工作区中的filename文件
git checkout <commit> --filename,用指定提交中的文件覆盖暂存区和工作区中对应的文件
git checkout -- .或者git checkout .,用暂存区的所有文件直接覆盖本地文件,取消所有的本地的修改,是一条危险的操作
git clean
删除本地多余的目录和文件
git clean -nd,显示要删除的内容,但是是预删除
git clean -fd,强制删除多余的文件和目录
git rm
rm命令删除的文件只是在本地进行了删除,尚未添加到暂存区,也就是说,直接在工作区删除,对暂存区和版本库没有任何影响。
git rm命令会将删除动作加入暂存区,这是执行提交动作,就从真正意义上执行了文件删除。
git mv
git mv,移动文件,git中以git rm和git add两条命令取而代之。
git archive
git archive,对任意提交对应的目录树建立归档。
git archive -o latest.zip HEAD,基于最新提交建立归档文件latest.zip
git archive -o partial.tar HEAD src doc,只将目录src和doc建立到归档文件partial.tar中
git archive --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz,基于里程碑v1.0建立归档,并且为归档中的文件添加目录前缀1.0
git clone
git clone <repository> <directory>,将repository指向的版本库创建一个克隆到directory目录中。目录directory相当于克隆版本库的工作区,文件都会检出,版本库位于工作区下得.git目录中。
git clone --bare <repository> <directory.git>
git clone --mirror <repository> <directory.git>
上面的两种克隆版本都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。
git push
git push <remote> [branch],就会将你的 [branch] 分支推送成为 [alias] 远端上的 [branch] 分支,要推送的远程版本号的URL地址由remote.<remote>.pushurl给出,如果没有配置,则使用remote.<remote>.url配置的URL地址。
git pull
git pull,从远端的服务器上下载数据,从而实现同步更新。要获取的远程版本库的URL地址由remote.<remote>.url提供。
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Git命令详解
一个中文git手册:http://progit.org/book/zh/ 原文:http://blog.csdn.net/sunboy_2050/article/details/7529841 前面两 ...
- git命令详解( 七 )
此为git命令详解的第七篇 这章我们可以来逐渐揭开 git push.fetch 和 pull 的神秘面纱了.我们会逐个介绍这几个命令,它们在理念上是非常相似的. git push的参数 git ...
- git命令详解( 四 )
此篇为git命令详解的第四篇,话不多说,我们直接上知识点好吧 git Push 偏离的工作 gitPush: 此命令负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录.一旦 git ...
- Git 命令详解及常用命令
Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 1 2 3 4 Work ...
- git命令详解( 二 )
这是git详解的第二篇,最近这个加班有点虚,所以文章也写的比较懒了,一到加班不得已,保温杯里泡枸杞啊,不扯了,今天我们来看看git的第二篇 这篇内容主要是git的一些远程命令 远程仓库 git clo ...
- git命令详解( 六 )
此为git命令的第六篇 远程跟踪分支 不知道大家有没有发现在前面几篇中Git 好像知道 master 与 o/master 是相关的.当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 mas ...
- git命令详解( 八)
此为记录git的第八篇,前七篇为远程篇,工作中最常用的都在前七篇,因为要在远程分支上合作开发 在提交树上移动 撤销变更 在提交树上移动 在接触 Git 更高级功能之前,我们有必要先学习在你项目 ...
- git命令详解( 三 )
此篇为git命令的第三篇 目录 git Pull 模拟团队合作 Git Pull 在上一篇的结尾我们已经知道了如何用 git fetch 获取远程的数据, 现在我们学习如何将这些变化更新到我们的工作当 ...
随机推荐
- OC细节 - 1.深拷贝与浅拷贝详解
概述 拷贝:复制一个与源对象内容相同的对象 实现拷贝,需要遵守以下两个协议 NSCopying NSMutableCopying 拷贝返回对象的种类 可变,mutableCopy消息返回的对象 不可变 ...
- Memento 模式
Memento 模式的关键就是要在不破坏封装行的前提下,捕获并保存一个类的内部状态,这样就可以利用该保存的状态实施恢复操作. /////////Originator.h//////////////// ...
- 轻松使用px为单位开发移动端页面
研究移动端页面已经有许久了,一直执着于rem来开发,不谈性能怎么样,单从工作效率上看影响了不少,首先要固定设计稿的宽度,一般都是固定在640px,然后在根据根目录的字体大小来计算出每个元素的rem的值 ...
- Windows下面对环境变量的操作
如何在cmd命令行中查看.修改.删除与添加环境变量:首先明确一点:所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改 ...
- Python 学习之urllib模块---用于发送网络请求,获取数据
1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1) ...
- Administration Commands
Commands useful for administrators of a hadoop cluster. balancer Runs a cluster balancing utility. A ...
- MVC5 学习笔记1
新装了vs2013 开始试着学习MVC5 首先用了2013的内置的框架 这里提三点 1. bootstrap (现已加入mvc5豪华套餐) 他的框架已经加入了bootstrap 3.0的版本(http ...
- LINQ小记
//LINQ 根据长度查询出来 string[] strs = new string[] { "1", "22", "333& ...
- ASP.NET MVC轻教程 Step By Step 12——客户端验证
前面两节使用的两种数据验证方法都是在服务器端进行的,也就是提交了表单,数据回传给服务器才能验证.这样会带来两个问题,一是用户体验不好,用户提交了表单之后才知道存在问题:二是会给服务器带来额外的压力.我 ...
- MySQL驱动阅读------executeQuery查询的过程,基于JDBC-----5.1.26
Statement statement = connection.createStatement(); final ResultSet resultSet = statement.executeQue ...