github提交PR(pull request)過程和問題
前幾天boss讓做一個PR,一臉懵逼,查資料問同事,最後還被boss批,終於提交了PR。
PR,全程pull Request ,下面寫一下提交過程和我遇到的坑。
專案背景:一個開源專案,我自己建立了一個分支並進行大量修改,需要PR到master上面,boss進行merge。
1. 登入我的github,訪問開源專案的github,在程式碼右上方有一個按鈕,fork。點選fork後,自己的github就出現了這個專案。
2. 到自己的github專案中,點選clone到本地。
git clone 我的github專案連結
接下來執行完畢,使用git remote -v 檢視當前狀態,會出現這樣的反饋資訊
origin git@github 我自己的專案地址
3.到專案的github中,複製專案的連結,繼續檢視當前狀態
git remote add upstream 開源專案的連結
git remote -v
反饋資訊如下:
origin git@github 我自己的專案地址
upstream http://github.com 開源專案的專案地址
現在你的原生代碼已經與遠端程式碼相連了。
坑1: 一定確定origin是你自己的地址,upstream是遠端的地址。
4. 在本地建立分支,在分支上進行編輯程式碼,提交程式碼
git branch 新分支(develop) git checkout develop // 在本地編輯改變程式碼 git add . git status git commit -m '提交原生代碼' git push origin master
坑2:自己需要提交程式碼到自己的master分支。(我好幾次都提交到develop分支,結果後面出錯不能PR)
5.在github上面進行操作:在自己的介面上點選pull request ----繼續點選pull new request 進行提交
然後進入compare change 比較變化介面,進行程式碼比較。此時可以選擇compare across forks 進行比較。
坑3:我自己增刪改動很多,所以無法進行直接比較,或者無法進行merge,需要手動解決衝突。
最後我只好把自己刪除的部分去掉,保留自己新增的一部分程式碼,這樣進行了提交(這部分時間花了我3個小時。。。)
6.如何解決衝突(保證自己的程式碼功能不受影響的前提下)?需要進行下面的操作
// 如何解決衝突問題?
git checkout master
git pull url master //下載最新master(包含新的commit的master)
git checkout develop-branch(自己的分支)
git rebase -i url/master (將新的master程式碼rebase到自己的分支上面)
while(出現衝突)
{需要git status 手動解決程式碼衝突 git add . git rebase --continue}
git push -f origin develop-branch
這部分操作我沒有全面處理過,自己之前直接刪除有衝突的部分。以後需要多實踐才行。
寫程式碼感悟:git等非視覺化介面的操作,不能死記硬背,主要靠日常多操作。不能急躁,git寫錯程式碼容易造成更大的麻煩。
總結:
pull request: 個人程式碼提交到團隊程式碼過程
1.登入個人的github賬戶,對團隊的github的repo進行fork。那麼個人的賬戶下就有了團隊的repo。(視覺化)
2.clone資料庫的地址到本地電腦。
git clone 團隊.git(git介面)
3.使用git remote -v 檢視本地repo與哪些遠端倉庫建立了聯絡?目前自己本地repo只和自己的遠端repo建立聯絡,並沒有與團隊的repo建立聯絡。
4.使用git remote add upstream 團隊repo地址
將本地repo與遠端團隊的repo建立聯絡。
檢視git remote -v 即可檢視目前本地repo已經與自己的repo聯絡,也與團隊的repo聯絡. origin是自己的地址,upstream是團隊的地址。
5.新建分支 git checkout -b 新分支
git branch 切換到新分支(使用git branch 檢視當前分支)
修改檔案 git add. git commit git push(一定push到自己的repo)
發起PR(pull request)——視覺化
1.在自己的repo上,點選pull-request ,點選new pull request。(最好是自己的master合併到團隊的master進行PR操作)
2.comparing changes -判斷差異,團隊負責人負責合併分支。
其他的事情需要團隊負責人進行merge操作。
工作流程
1.負責人提出功能要求(更改要求)
2.前端完成預期效果
3.截圖給負責人看
以上三步操作重複完成多次,直到產品功能完善後
4.前端提出pull request 進行合併程式碼操作。(自己將程式碼進行完善整理後),負責人進行merge操作。