Git常用命令
Git 配置
Git 配置变量存放在以下三个不同的地方:(摘自1.5 起步 - 初次运行 Git 前的配置)
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用 git config
时用 --system
选项,读写的就是这个文件。
~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global
选项,读写的就是这个文件。
- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config
里的配置会覆盖 /etc/gitconfig
中的同名变量。
1 2 3 4
| $ git config --global user.name "Sanyucz" $ git config --global user.email kingxiubin@gmail.com 要检查已有的配置信息,可以使用 git config --list 命令
|
暂存
1 2 3 4 5 6
| // 暂存 git stash // 查看所有暂存信息 gi stash list // 恢复 stash@{0} git stash apply stash@{0}
|
创建、删除版本库
版本库(仓库repository
)的创建和文件添加与提交
1 2 3 4 5 6 7 8
| // 初始化仓库 git init // fileName 是要添加的文件 添加所有可以用通配符 * git add <fileName> // 提交到本地,message是提交的信息 git commit -m "<message>" // 删除本地仓库 find . -name ".git" | xargs rm -Rf
|
查看版本库和文件信息
1 2 3 4 5 6 7 8 9 10 11 12
| // 查看仓库状态: git status git status // 如果要查看具体内容:git diff git diff readme.txt // 查看conmmit的历史记录:git log git log // 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline 参数: git log --pretty=oneline // 查询历史命令:git reflog git reflog // 查看工作区和仓库文件的区别 git diff HEAD -- < fileName >
|
版本回退和撤销修改
1 2 3 4 5 6 7 8
| // 回退上一版本: git reset --hard HEAD^ // 回退指定版本:3628164 是用 git log 查询出来的版本数值 git reset --hard 3628164 // 放弃修改文件 git checkout -- file //可以把已被添加到暂存区的 'file' 移到工作区 git reset HEAD file
|
远程仓库和分支管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // 克隆远程仓库 git clone <url> // 添加远程仓库 git remote add origin https://github.com/sanyucz/cocoachina-ios-app.git // 设置默认远程仓库 -u : --set-upstream git push -u origin master // 删除远程仓库 git remote rm origin // 创建dev分支,然后切换到dev分支: git checkout -b dev // 和下面两条命令等同: git branch dev git checkout dev // 查看当前分支: git branch // 把 'dev' 分支合并到主分支然后再删除 'dev' 分支 git merge dev git branch -d dev // 删除远程分支:(其实是把一个空分支push到远程某个分支) git push origin :dev
|
撒销一个合并
1 2 3 4 5 6 7
| // 如果你想把当前的修改都放弃,可以用下面的命令回到合并之前的状态: git reset --hard HEAD // 如果你已经把合并后的代码提交,但还是想把它们撒销: git reset --hard ORIG_HEAD // 再如果你不光把代码提交,你提交之后又做了新的修改,又不想放弃修改 // HEAD 合并的那个 版本号 git revert -m 1 HEAD
|
标签
1 2 3 4 5 6 7 8 9 10
| git tag v1.0 // 打标签到当前分支最新的 commit 上 git tag v0.9 6224937 // 打标签到当 head 为 6224937 的 commit 上 git tag // 查看标签 git show <tagname> // 查看标签信息 git tag -a v0.1 -m "version 0.1 released" 3628164 // -a指定标签名,-m指定说明文字 git tag -d v0.1 // 删除标签 git push origin <tagname> // 推送某个标签到远程 git push origin --tags // 推送到远程的本地标签 git tag -d v0.9 // 加上下个命令删除远程的标签 git push origin :refs/tags/v0.9
|
配置别名
一般可以:co
表示 checkout
,ci
表示 commit
,br
表示 branch
1 2 3
| git config --global alias.st status // 一个丧心病狂的别名配置: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
GIT 的配置
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用 git config
时用 --system
选项,读写的就是这个文件。
~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用 git config
时用 --global
选项,读写的就是这个文件。
- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config
里的配置会覆盖 / etc/gitconfig
中的同名变量。1 2
| git config --global user.name "John Doe" git config --global user.email johndoe@example.com
|
Git图解
廖大的图实在是太通俗易懂了,无耻盗图ing..

Git的版本库里面有个 stage
(暂存区),我们平时工作的文档目录是工作区,对文件有了修改执行 git add
命令就会把变化的文件添加到版本库的暂存区,再执行 git commit
才会把文件从暂存区添加到当前分支。
stage
(暂存区)在物理上的路径是 .git/index
,文件存储的是每次的修改。
而 HEAD
其实是一个指向当前分支的指针,

当创建了 dev
分支的时候,是创建了一个 dev
指针,并且直接把 HEAD
指向 dev
指针。

当合并分支的时候直接把主分支 master
指向 dev
分支。