Git学习

133 阅读2分钟

原文日期:2016-05-15


由于工作需要,项目中都使用git来替换svn项目版本管理工具,抱着非常激动的心情来学习这东东。。。首先找到了以下几个网站学习,www.liaoxuefeng.com/wiki/001373…

www.ruanyifeng.com/blog/2014/0…。看了这廖雪峰这哥们的文章后,顿时对git感兴趣了,哈哈,为什么这么说呢?首先git是一个分布式版本管理工具,并且是由Linux的创始人花了两周时间搞定,没啥好说的,只能膜拜了,大师太牛叉了,总是这么屌屌的样子。。。目前已在国内外非常流行,以下是一些个人的总结。先来一张图,基本上理解了这张图,对git已经掌握的七七八八了,剩下的就是实践。

图片1.png

本地操作

  1. 刚安装完git后,git要求每个机器都自报家门:名字和邮箱

gitconfigglobaluser.name"YourName"git config --global user.name "Your Name" git config --global user.email "email@example.com"

  1. 初始化当前目录为git仓库目录

$ git init

  1. 修改文件后,需要将文件添加到暂存区,可添加多次

$ git add 文件名

  1. 将暂存区的文件提交到本地仓库

$ git commit -m ‘提交的备注’

  1. 查看本地仓库的状态,常用

$ git status

  1. 文件修改内容比较

$ git diff

  1. 查看仓库操作日志,加上--pretty=oneline可以格式化输出。

gitloggit log git log --pretty=oneline

  1. 撤销工作区的修改和删除

$ git checkout -- 文件名

  1. 撤销暂存区的修改,返回到工作区

$ git reset HEAD 文件名

  1. 在git中HEAD是指向当前版本的指针,相当于C语言的指针,可使用reset来快速返回到某个版本

$ git reset --hard HEAD^ //回退到上一个版本

  1. 如果想回退到其他版本或者重返最新版本,可使用git reflog查看左右历史记录,然后通过reset指定版本号,这时就会回退或者返回到指定版本

gitrefloggit reflog git reset --hard 提交版本的id标识

远程仓库

  1. 创建SSH key

$ ssh-keygen -t rsa -C "youremail@example.com"

  1. 将id_rsa.pub文件的内容添加到github的ssh栏位中。

  2. git克隆远程仓库

$ git clone git@github.com:Alan3058/hello-world.git

  1. 设置远程仓库的简称

$ git remote add origin git@github.com:Alan3058/hello-world.git

  1. 查看远程仓库的信息

$ git remote -v

分支管理

  1. 创建dev分支

$ git branch dev

  1. 切换分支

$ git checkout dev

  1. 也可创建分支并切换到该分支上

$ git checkout -b dev

  1. 拉取远程分支dev,并在本地创建该分支dev

$ git checkout -b dev upstream/dev

  1. 查看本地分支情况

$ git branch

  1. 查看所有分支,包括远程

$ git branch -a

  1. 合并dev分支到当前分支上

$ git merge dev

  1. 删除dev分支

$ git branch -d dev

  1. 推送本地dev分支代码到远程master上

$ git push origin dev:master

  1. 拉取远程master分支代码到本地dev分支,并合并工作区代码,相当于fetch+merge操作。一般还是建议采用先fetch,再merge。

$ git pull origin master:dev

  1. 拉取远程master分支代码到本地dev分支

$ git fetch origin master:dev

  1. 远程master分支与本地dev分支合并

$ git merge origin/master dev

  1. 查看本地跟踪分支对应的远程分支

$ git branch -vv

  1. 设置本地跟踪分支dev与远程分支关联master

$ git branch dev --set-upstream-to origin/master