一個人的江湖很孤獨
一個人的江湖是孤獨的,寫程式也是,雖然很多高手都是一個人,但是如果能集合多人的力量不是更好嗎?高手難求,但是一個好的團隊卻是可以培養出來的,加入一個好的團隊,大家努力往前爬,不也是一種幸福嗎?
所以,這篇文章就是要說明如何與團隊協同開發系統,協同開發的流程會是怎麼樣子來進行呢?
組織( Organization)
開發團隊或稱為專案團隊,可以視為一個組織,在組織中有許多角色,有專案管理者、程式開發人員.....等,在GitHub中將專案管理者視為專案擁有者(Owner),其他專案開發者(Member),下圖描述說明:組織(organization)名稱為Org X,其中Mark為專案管理者(owner)、Jimmy與Bill都是程式開發人員(member)。
在這個組織中主要維運一個專案(repo_abc),為Jimmy,Bill和Mark共同維護,接下來就以Jimmy觀點來看他怎麼進行維護專案.
Step1) 同步
當有需求需要進行程式修改時,先要進行程式碼同步,把OrgX上repo_abc/master最新程式碼抓下來.
$ git fetch
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 2), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (5/5), done.
From https://github.com/Org_x/repo_abc
e795431..d4468d5 master -> origin/master
Step2) 同步再上傳
當完成修改準備要push程式碼到Jimmy的GitHub/repo_abc時,記得先再同步一次,確定沒問題再push.
$ git add .
$ git commit -m "mark PENDING: Not yet implemented"
$ git fetch
$ git rebase Jimmy_github/Jimmy_branch
$ git remote -v
origin https://github.com/Org_x/repo_abc.git (fetch)
origin https://github.com/Org_x/repo_abc.git (push)
Jimmy_github https://github.com/Jimmy/repo_abc.git (fetch)
Jimmy_github https://github.com/Jimmy/repo_abc.git (push)
$ git push Jimmy_github HEAD:master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 450 bytes | 450.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/Jimmy/repo_abc.git
687a0ea..011b1f5 HEAD -> master
Step3) 在Jimmy GitHub上發Pull request
在Jimmy GitHub上發Pull request時,系統很聰明的會發現這個repo_abc是從Org_X/repo_abc上Fork出來的,所以就會問你是否要發Pull request 希望merge回Org_X/repo_abc專案?
Step4) Owner進行code review
當Mark收到e-mail通知時,就可以進Org_X/repo_abc進行code review.
Step5) Approve -> Merge進Org_X/repo_abc
最後如果同意了(Approve)就會跳出merge按鈕,按下後就會merge進Org_X/repo_abc,完成一個程式發布程序.
留言
張貼留言