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了

相關文章
相關標籤/搜索