使用rebase进行Git协作的一种方案

克隆仓库

首先,初次运行前的配置

git config --global user.name "John"
git config --global user.email "john@gmail.com"

Tip: 请根据您的实际名字和邮箱来执行这两条命令

git clone {git-url} # {git-url}请替换成实际的仓库地址

新建分支

首先,每次开发新功能,都应该新建一个单独的分支。

# 获取主干最新代码
git checkout master
git fetch origin
git rebase origin/master
# 新建一个开发分支,{分支名称}请替换成实际的分支名称
git checkout -b {分支名称}

提交分支commit

分支修改后,就可以提交commit了。

git add --all #git add 命令的all参数,表示保存所有变化(包括新建、修改和删除)。
git commit --verbose #git commit 命令的verbose参数,会开启一个交互式提交界面,可以编辑多行的提交信息,并列出 diff 的结果。

提交commit时,必须给出完整扼要的提交信息,下面是一个范本。

新增“YY主播”临时功能
- 临时增加“YY主播”推广链接有关注册和充值的记录及相应统计的功能
- 调整网站后台的菜单显示机制
- 增加主播帐号使用的注册记录显示界面和相应查询业务逻辑
- 增加主播帐号使用的充值记录显示界面和相应查询业务逻辑

Tip: 第一行是不超过50个字的提要,然后空一行,罗列出改动原因、主要变动、以及需要注意的问题。

合并commit

  分支开发完成后,很可能有一堆commit,但是合并到主干的时候,往往希望只有一个(或最多两三个)commit,这样不仅清晰,也容易管理。可以使用如下命令合并commit:

# 获取最新代码
git fetch origin
# 合并commit
# git rebase命令的i参数表示互动(interactive),这时git会打开一个互动界面,进行下一步操作。
git rebase -i origin/master

  此时会列出当前分支最新的所有commit,每个commit前面有一个操作命令,默认是pick,表示该行commit被选中,要进行rebase操作。下面是一大堆注释,列出可以使用的命令。

  • pick:正常选中
  • reword:选中,并且修改提交信息;
  • edit:选中,rebase时会暂停,允许你修改这个commit(参考这里)
  • squash:选中,会将当前commit与上一个commit合并
  • fixup:与squash相同,但不会保存当前commit的提交信息
  • exec:执行其他shell命令

  上面这6个命令当中,squash和fixup可以用来合并commit。先把需要合并的commit前面的动词,改成squash(或者s)。
  这样一改,保存并执行后,当前分支只会剩下正常选中的commit。标记为squash的commit,都会合并到他们之前的正常选中的commit中。提交信息会同时包含这几个commit的提交信息。
  如果将squash命令改成fixup命令,还是会生成正常选中的commit,标记为fixup的commit,都会合并到他们之前的正常选中的commit中。但是,新的提交信息里面,标记为fixup的commit的提交信息,会被注释掉。

更新主干分支

git checkout master
git rebase {分支名称} #{分支名称}为开发的分支名称

推送到远程仓库

git push origin master

发表评论