Git合并流程

  1. pr
  2. 合并

pr

首先, 代码提交者需要进行pr(pull request)操作, 通知项目管理者进行合并操作.

在项目管理还未进行合并操作之前, 理论上, 自身提交的分支内容不应该进行改动;

如果在合并前, 功能需要调整; 直接在自身提交的分支上进行编码, 然后 add->commit->push; 无需再次进行pr操作;

pr仅是一个通知操作, 并没有做任何其他的动作; 不会复制你的分支内容到主库, 所以切记, 不要以为pr后代码就会到主仓库而自身仓库就可以继续进行编码;

合并

合并操作, 是由项目管理者进行; 将开发者仓库分支内容合并至主仓库;

不要使用git页面上的合并按钮进行合并, 如果使用按钮会在commit树中多一个没有的commit (如: Merge branch ‘xxxx’ into ‘master’), 造成commit内容冗余混乱;

image

合理的操作流程

  1. 在PR请求页面中查看提交者的仓库及分支地址; 如: http://git.citongs.com/xxxx/mgr.git
  2. 在本地项目中, 将此地址添加至remote列表; 如: git remote add http://git.citongs.com/xxxx/mgr.git xxx; 如此xxx就代表此开发人员的仓库; 同理,upstream, origin 是同样的概念;
  3. 获取提交人员的代码; 如: git fetch xxxx 分支名; 或省略分支名以获取整个仓库
  4. 合并至本地; 如: git merge xxxx/分支名; 合并后进行代码比对等操作; 无误后进行 push 操作

master分支应该设置为,不允许force push操作

多人同时提交的情况

有时在多人同时开发时, 可能会出现多人同时进行pr请求的情况; 此时, 如果合并了一个人员的代码, 另外一个人员的代码应为commit树与master库不同, 就会出现冲突或多一个Merge branch ... commit的情况;

  1. 冲突; 则通知相关人员进行修改; 本地则撤销此次的合并;
  2. 自动合并commit树; 则可以以 origin/master 为主进行rebase, 来消除这个自动生成的commit; 如: git rebase origin/master;

!! 一定要保证项目commit的清晰; 多余的commit在代码追踪/维护等都会有阻碍