git使用图解

使用前

  1. 安装git
  2. 配置name 和 email
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

使用中

本地单用户工作流

  1. 初始Git管理仓库
git init
  1. 添加文件到Git仓库
git add readme.txt
  1. 提交文件到Git仓库
git commit -m "upload readme file"

远程单用户工作流

  1. 克隆一个远端Git版本库 or 关联本地版本库
git clone https://github.com/cizel/soft_backup
git remote add origin git@github.com:cizel/soft_backup.git
  1. 添加文件到Git仓库
git add readme.txt
  1. 提交文件到Git仓库
git commit -m "upload readme file"
  1. 上传到远端Git仓库
git push origin master

多用户分支使用策略

  1. 基本语法

    查看分支: git branch

    创建分支: git branch <name>

    切换分支: git checkout <name>

    创建+切换分支: git checkout -b <name>

    合并某分支到当前分支: git merge <name>

    删除分支: git branch -d <name>

  2. 分支的使用

Git创建Develop分支的命令:

git checkout -b develop master

将Develop分支发布到Master分支的命令

  # 切换到Master分支
  git checkout master
  # 对Develop分支进行合并
  git merge --no-ff develop

tip: --no-ff

未使用 --no-ff 使用快速合并的策略 

使用 --no-ff 会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。 

  1. 分支的管理策略

一、主分支Master

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。

二、开发分支Develop

主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。

三、 功能分支

第一种是功能分支,它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。

四、预发布分支

预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。

五、修补bug分支修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。 

遇到问题

参看与对比

# 告诉你有文件被修改过
git status
#可以查看修改内容
git diff

版本前进与后退

# 查看提交历史,以便确定要回退到哪个版本
git log
# 查看命令历史,以便确定要回到未来的哪个版本
git reflog

修改版本

git reset --hard commit_id

撤销commit

git reset --hard commit_id
# 如果使用远端,git push 的情况
git push origin HEAD --force

git revert和git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

git fetch和git pull的区别

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
  2. git pull:相当于是从远程获取最新版本并merge到本地,git pull相当于git fetch + git merge
posted @ 2016-07-11 13:23  axl234  阅读(204)  评论(0编辑  收藏  举报