GitHub 开发流程

流程

GitHub flow算是一种相对简单的Git工作流程,主要步骤为下:

其中上游分仓库称为upstream,远端仓库称为origin。

  1. 首先从upstream仓库fork代码到远端仓库,然后将远端仓库克隆到本地。
  2. 给本地仓库添加一个upstream仓库,方便同步最新代码
  3. 从本地的master(或者develop,根据公司要求)创建一个功能开发分支切换到功能开发分支上进行功能的开发。
  4. 开发完成后,将代码提交并推送到origin
  5. 在origin上发起一个pull request请求,代码将会发送给审查者review。

Git flow是一个更规范实用的Git工作流。

  1. 从远端仓库克隆工作分支到本地,然后本地切换到自己的开发分支上
  2. 进行功能开发,开发完成后合并到主开发分支
  3. 如果升级就从开发分支先合并到release分支,release再合并到线上分支
  4. 如果遇到紧急bug修复,创建hotfix分支,修复后分别合并到线上和开发分支

相关命令

  1. git clone 仓库地址 - 克隆远端仓库到本地,通常情况下只会克隆master
    • –depth=1 - 只克隆最新提交内容,不克隆历史记录
  2. git remote add upstream git@github.com:fe/github-flow.git - 添加upstream仓库
  3. git checkout -b 开发分支名 基于的分支名 - 创建并切换到开发分支,默认基于master分支
    • git checkout -b product origin/product - 基于远端分支创建新的分支
  4. git rebase -i 合并多个提交的前一个提交编码 - 将多个提交合并为一个提交
    • p/pick - 为保留该提交
    • s/squash - 保留提交记录,并将提交合并到之前的提交上
    • d/drop - 删除该提交记录
  5. git pull upstream master --rebase - 长时间未同步时同步上游代码保持本地与上游代码一致

升级流程

Github flow升级

  1. 本地打tag,然后推送到upstream的master

    • git tag 标签内容 - 打标签
    • git push upstream 标签内容 - 将标签推送到远端
  2. upstream的master提一个pr到upstream的product

Git flow升级

  1. develop提pr到master分支

  2. 本地pull master的分支

  3. 本地打tag,推送到远端触发升级

    • git tag 标签内容 - 本地打标签
    • git push upstream 标签名 - 推送到远端分支

常见问题

在命令行显示git分支

1
2
git_branch() {      git branch 2> /dev/null | sed -e '/^[^]/d' -e 's/ (.*)/(\1)/' }
export PS1="\u@[\033[32m]\w[\033[33m]\$(git_branch)[\033[00m]\$ "

如果希望立即生效,在命令行执行一下代码即可

1
source $HOME/.bashrc

git中文文件名显示问题

1
git config --global core.quotepath false

遇到conflict处理

当使用git pull upstream master --rebase的时候,可能会遇到conflict的问题。处理办法:

  1. 遇到conflict时,分支会自动切换到临时分支上,并且在冲突地方给出提示。
  2. 手动进行冲突处理
  3. 使用git add .将重新处理的添加到暂存区
  4. 使用git rebase --continue恢复到之前到分支上,完成处理

其他git命令

  • git branch -m oldName newName - 分支重命名
  • git branch -d/-D 分支名 - 删除分支
  • git branch -a - 查看所有本地分支和远端分支
  • git remote -v - 查看所有远端仓库地址
  • git push origin --delete 分支名 - 删除远端分支
  • git config --list - 查看本机git用户信息
    • git config user.name
    • git config user.email
  • git commit --amend --reset-author - 修改commit提交作者
  • git commit --date="周 月 日 时间 年 +0800" -am "提交" - 指定commit时间和内容
  • git commit --amend --date="Thu Aug 9 23:04:57 2018 -0700" - 修改commit时间
  • git show - 查看最近一次提交的变更
    • git show -5 - 查看最近五次提交的变更
    • git show commit_id - 查看指定提交的变更
  • git remote update origin --prune - Git刷新分支