Git工做流|8月更文挑战

前言

git工做流是一个基于分支的、支持团队协做的效率工程。咱们能够在工做中,很方便的合并、review他人代码,而且能够清晰的看到提交记录,方便代码回滚。git

不少互联网企业都已经采用这种多人协同的开发方式,真的很是爽,谁用谁知道。web

git工做流

经过以下工做流,能够很轻松的完成功能提交, 而且还可让合并代码的人轻松review、comment.markdown

graph TD
fork到本身仓库.. --> 建立功能分支... --> 提交点代码到功能分支... --> create-pull-request....

以下为React仓库中的某个pr image.pngsvg

工做流常见问题汇总

1. 本地代码过久远,须要更新

固然不是每一个pr都是一番风顺的。好比你的功能分支已经写了几个月了, 此时你本地的代码相对于远端仓库来讲就过久远了,若是不更新的话,可能会致使有不少冲突。fetch

须要在你的功能分支上再拉一次远端代码。url

graph TD
git_pull_upstream_master..... --> create_pull_request....

细心的同窗可能会发现, 在你此次pr的commit里,包含了主分支的commit。spa

3an4js2 feature: xxx
3an4js2 master commit three
3an4js2 master commit two
3an4js2 master commit one

复制代码

这是由于git pull 至关于把远程仓库的的代码合并到你本地仓库了,天然就有这些commit了。3d

那有没有办法使 既能更新本地代码 又 没有这些不属于个人commit 呢?指针

graph TD
1.git_fetch_upstream_master...... --> 2.git_rebase_upstream/master...... --> 3.git_push_-f...

rebase 至关于把当前分支的修改 拼接在 最新的master后面, 以下mywork分支的c5,c6就直接拼接在了origin后面, 没有多余的提交记录code

pull=fetch+merge, merge会把origin的commit 合并到你的分支里。这也是pr里会显示主分支的commit的缘由。

image.png

2. rebase | merge 出现冲突

git rebase upstream/master
get merge master
复制代码

rebasemerge 都有可能产生冲突

若是是rebase产生冲突

  • 咱们修改完冲突,只用git add,
  • git rebase --continue就能够了

merge产生冲突

  • 从新走一遍提交流程

3. 合并多个commit为1个

有时候,咱们要提交的功能很复杂,可能会产生多个commit, 可是在提交pr的时候,只须要一个汇总的commit 就能够了,这个要怎么作呢?

例如:

  • 1: 个人第4次提交
  • 2: 个人第3次提交
  • 3: 个人第2次提交
  • 4: 个人第1次提交
  • 5: feat: ...

将这1 - 4提交合并为一个

咱们能够将当前git指针 指到倒数第五次提交,这样1 ~ 4次提交就变为未提交状态.

git reset 2as4cjd4(commitId)

再从新add, commit 就能够了
复制代码

4.如何将代码切换到别人的pr

  • 先找到pr的id
  • git fetch upstream pull/id/head:temp
  • git checkout temp

这个命令就是 将远端id为..的pr拉取到本地的temp分支,切换到temp分支就能够看到远端的pr了

相关文章
相关标签/搜索