1、术语
仓库(Repository)
一个仓库包括了所有的版本信息、所有的分支和标记信息。在Git中仓库的每份拷贝都是完整的。仓库让你可以从中取得你的工作副本。
分支(Branches)
一个分支意味着一个独立的、拥有自己历史信息的代码线(code line)。你可以从已有的代码中生成一个新的分支,这个分支与剩余的分支完全独立。默认的分支往往是叫master。用户可以选择一个分支,选择一个分支叫做checkout.
标记(Tags)
一个标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态,例如2009年1月25号在testing分支上的代码状态
提交(Commit)
提交代码后,仓库会创建一个新的版本。这个版本可以在后续被重新获得。每次提交都包括作者和提交者,作者和提交者可以是不同的人
URL
URL用来标识一个仓库的位置
修订(Revision)
用来表示代码的一个版本状态。Git通过用SHA1 hash算法表示的id来标识不同的版本。每一个 SHA1 id都是160位长,16进制标识的字符串。最新的版本可以通过HEAD来获取,之前的版本可以通过"HEAD~1"来获取,以此类推。
2、常用命令
一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
3、配置
Git的配置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
- 显示当前的Git配置
$ git config --list
- 编辑Git配置文件
git config -e [--global]
- 设置提交代码时的用户信息
git config [--global] user.name "[name]" git config [--global] user.email "[email address]"
4、新建代码库
- 在当前目录新建一个Git代码库
git init
- 新建一个目录,将其初始化为Git代码库
git init [project-name]
5、增加/删除文件
- 添加指定文件到暂存区
git add [file1] [file2] ...
- 添加指定目录到暂存区,包括子目录
git add [dir]
- 添加当前目录的所有文件到暂存区
git add .
- 添加每个变化前,都会要求确认, 对于同一个文件的多处变化,可以实现分次提交
git add -p
- 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
- 停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]
- 改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]
5、代码提交
- 提交暂存区到仓库区$ git commit -m [message]
- 提交暂存区的指定文件到仓库区$ git commit [file1] [file2] ... -m [message]
- 提交工作区自上次commit之后的变化,直接到仓库区$ git commit -a
- 提交时显示所有diff信息$ git commit -v
- 使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息$ git commit --amend -m [message]
- 重做上一次commit,并包括指定文件的新变化$ git commit --amend [file1] [file2] ...
6、分支
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。
有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式。
- 创建分支并且切换过去(dev)
git checkout -b dev
- 查看所有分支(当前分支前面会标一个*号)
git branch
- 切换回master分支
git checkout master
- 合并指定分支到当前分支
git merge dev
- 删除分支
git branch -d dev