git-flow.jpg
去年匆匆与git接触了一下,由于有些linux基础,对于命令还是很容易上手,就按部就班稀里糊涂的搭建了本博客到github,如今直到2016年尾声才又拾起hexo,用去年写的《使用Git Hook自动部署Hexo到个人VPS》一直实现不了自动部署,不得不认真学习下git,现在命令行用的比较多,所以把一些指令总结一下,以便回顾和查询。
理解这些指令,觉得最重要的是理解Git的内部原理,比如Git的分布式版本控制,分清楚工作区、暂存区、版本库,还有就是理解Git跟踪并管理的是修改,而非文件。<!--more-->

第一步是要获得一个GIT仓库

有两种获得GIT仓库的方法,一是在需要用GIT管理的项目的根目录执行:

git init

执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
  另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地,而不是取某一个特定版本,所以用clone而不是checkout:

git clone <url>

设置

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

ssh -v git@github.com //检验下Git安装是否正确,
显示hi github用户名!You've successfully authenticated 说明Git安装正确

提交

git tracked的是修改,而不是文件
git-trees.jpg

#将“当前修改”移动到暂存区(stage)
$ git add somfile.txt
#将暂存区修改提交
$ git commit -m "Add somfile.txt."

状态

$ git status
$ git diff

回退

# 放弃工作区修改
$ git checkout -- file.name
$ git checkout -- .

# 取消commit(比如需要重写commit信息)
$ git reset --soft HEAD

# 取消commit、add(重新提交代码和commit)
$ git reset HEAD
$ git reset --mixed HEAD

# 取消commit、add、工作区修改(需要完全重置)
$ git reset --hard HEAD

记录

$ git reflog
$ git log

删除

$ rm file.name
$ git rm file.name
$ git commit -m "Del"

Git 远程分支管理

git pull                         # 抓取远程仓库所有分支更新并合并到本地
git pull --no-ff                 # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
git fetch origin                 # 抓取远程仓库更新
git merge origin/master          # 将远程主分支合并到本地当前分支
git checkout --track origin/branch     # 跟踪某个远程分支创建相应的本地分支
git checkout -b <local_branch> origin/<remote_branch>  # 基于远程分支创建本地分支,功能同上
 
git push                         # push所有分支
git push origin master           # 将本地主分支推到远程主分支
# 第一次推送,-u(--set-upstream)指定默认上游
git push -u origin master        # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
git push origin <local_branch>   # 创建远程分支, origin是远程仓库名
git push origin <local_branch>:<remote_branch>  # 创建远程分支
git push origin :<remote_branch>  #先删除本地分支(git branch -d <branch>),然后再push删除远程分支

Git 远程仓库管理

git remote -v                    # 查看远程服务器地址和仓库名称
git remote show origin           # 查看远程服务器仓库状态
git remote add origin git@github.com:whuhacker/Unblock-Youku-Firefox.git         # 添加远程仓库地址
git remote set-url origin git@github.com:whuhacker/Unblock-Youku-Firefox.git # 设置远程仓库地址(用于修改远程仓库地址)
git remote rm <repository>       # 删除远程仓库

克隆

$ git clone https://github.com/Yikun/yikun.github.com.git path
$ git clone git@github.com:Yikun/yikun.github.com.git path

分支操作

git-merge.png

# 查看当前分支
$ git branch

# 创建分支
$ git branch dev
# 切换分支
$ git checkout dev

# 创建并checkout分支
$ git checkout -b dev

# 合并分支
$ git merge dev

# 删除分支
$ git branch -d dev

标签

$ git tag 0.1.1
$ git push origin --tags

目前使用git主要流程就是先在本地clone一个git仓库,然后设置一下看git是否连接成功,接着git remote add origin git@github.com:michaelliao/learngit.git,添加要连接的远程仓库地址,进行push(将本地主分支推到远程主分支)还是pull(抓取远程仓库所有分支更新并合并到本地)操作即可。

注意:本文Fork自 yikun.github.io,凹凸实验室作进一步完善。
感谢您的阅读,本文由 凹凸实验室 版权所有。如若转载,请注明出处:凹凸实验室(https://aotu.io/notes/2015/11/17/Git-Commands/