基本概念
Git 是一个分布式的版本管理工具,不同于perforce的是,他每个人都有一个完整的版本库,这种结构及其像bitcoin的原理。
工作区 Workplace
即文件夹所在的位置
索引区 Index(stage)
git add 提交到的区域,可以理解为缓存区
版本库 Repository
git commit 提交到的区域,即为本地Repository。即.git文件夹
stash
与perforce中shelve的概念非常相似
基本应用
创建一个Repository
|
|
添加文件到stage区
|
|
提交到版本库
|
|
查看现有branch的状态
|
|
查看工作区中文件和版本库中区别
|
|
查看commit历史记录
|
|
退回上一个版本
|
|
- 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
- 当你用$ git reset –hard HEAD^回退到“add distributed”版本时,再想恢复到“append GPL”,就必须找到“append GPL”的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
|
|
丢弃工作区的修改
|
|
注意:有无 “–” 是有区别的,没有表示切换branch
删除文件
|
|
分支管理
git的分支与perforce的分支大不同,git的分支是基于类似于指针的方式来实现的,它是在创建不同的指针指向不同的commit版本
创建分支
|
|
上面的命令建立了dev分支并切换到dev,等同于如下:
|
|
切换分支
|
|
查看分支
|
|
删除分支
|
|
合并分支
|
|
如果有冲突,git会标示在有冲突的文件中,按照如下格式
|
|
另外一种合并分支的方法是
|
|
这种方法的不同是 合并会是一个新的commit, 而之前的只是简单的把master指向dev
远程管理
查看远程库信息
|
|
推送分支
|
|
获得分支
|
|
在本地创建和远程分支对应的分支
|
|
标签
添加标签
在某个分支上执行
|
|
查看标签
|
|
删除标签
|
|
reset 某个文件
- 首先查看该文件的历史版本信息:git log Default@2x.png
- 记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926
- 恢复该文件:git reset 9aa51d89799716aa68cff3f30c26f8815408e926 Default@2x.png
- 提交git:git commit -m “revert old file”