原文日期:2016-05-15
由于工作需要,项目中都使用git来替换svn项目版本管理工具,抱着非常激动的心情来学习这东东。。。首先找到了以下几个网站学习,www.liaoxuefeng.com/wiki/001373…和
www.ruanyifeng.com/blog/2014/0…。看了这廖雪峰这哥们的文章后,顿时对git感兴趣了,哈哈,为什么这么说呢?首先git是一个分布式版本管理工具,并且是由Linux的创始人花了两周时间搞定,没啥好说的,只能膜拜了,大师太牛叉了,总是这么屌屌的样子。。。目前已在国内外非常流行,以下是一些个人的总结。先来一张图,基本上理解了这张图,对git已经掌握的七七八八了,剩下的就是实践。
本地操作
- 刚安装完git后,git要求每个机器都自报家门:名字和邮箱
git config --global user.email "email@example.com"
- 初始化当前目录为git仓库目录
$ git init
- 修改文件后,需要将文件添加到暂存区,可添加多次
$ git add 文件名
- 将暂存区的文件提交到本地仓库
$ git commit -m ‘提交的备注’
- 查看本地仓库的状态,常用
$ git status
- 文件修改内容比较
$ git diff
- 查看仓库操作日志,加上--pretty=oneline可以格式化输出。
git log --pretty=oneline
- 撤销工作区的修改和删除
$ git checkout -- 文件名
- 撤销暂存区的修改,返回到工作区
$ git reset HEAD 文件名
- 在git中HEAD是指向当前版本的指针,相当于C语言的指针,可使用reset来快速返回到某个版本
$ git reset --hard HEAD^ //回退到上一个版本
- 如果想回退到其他版本或者重返最新版本,可使用git reflog查看左右历史记录,然后通过reset指定版本号,这时就会回退或者返回到指定版本
git reset --hard 提交版本的id标识
远程仓库
- 创建SSH key
$ ssh-keygen -t rsa -C "youremail@example.com"
-
将id_rsa.pub文件的内容添加到github的ssh栏位中。
-
git克隆远程仓库
$ git clone git@github.com:Alan3058/hello-world.git
- 设置远程仓库的简称
$ git remote add origin git@github.com:Alan3058/hello-world.git
- 查看远程仓库的信息
$ git remote -v
分支管理
- 创建dev分支
$ git branch dev
- 切换分支
$ git checkout dev
- 也可创建分支并切换到该分支上
$ git checkout -b dev
- 拉取远程分支dev,并在本地创建该分支dev
$ git checkout -b dev upstream/dev
- 查看本地分支情况
$ git branch
- 查看所有分支,包括远程
$ git branch -a
- 合并dev分支到当前分支上
$ git merge dev
- 删除dev分支
$ git branch -d dev
- 推送本地dev分支代码到远程master上
$ git push origin dev:master
- 拉取远程master分支代码到本地dev分支,并合并工作区代码,相当于fetch+merge操作。一般还是建议采用先fetch,再merge。
$ git pull origin master:dev
- 拉取远程master分支代码到本地dev分支
$ git fetch origin master:dev
- 远程master分支与本地dev分支合并
$ git merge origin/master dev
- 查看本地跟踪分支对应的远程分支
$ git branch -vv
- 设置本地跟踪分支dev与远程分支关联master
$ git branch dev --set-upstream-to origin/master