Git(2)
阿新 • • 發佈:2021-11-11
一、協同開發
多人合作開發一個專案(多人公用一個遠端倉庫),下面就拿路飛後臺專案為例
# 第一步:建立工作區,初始化倉庫 git init # 第二步:設定忽略檔案 .idea .DS_Store /script /logs/*.log __pycache__ # 第三步:提交到暫存區,再提交到版本庫 git add . git commit -m '第一次提交,寫完了首頁功能' # 第四步:gitee遠端新建一個遠端倉庫(空) # 建立一個origin git remote add origin [email protected]:pocohy/luffy_api.git # 把本地倉庫程式碼推送到遠端倉庫 git push origin master # ---------------以上操作可能是你領導做好了----------------- 首先,專案的擁有者,會把新來的人加成專案的協同開發者 然後,我們(開發者)需要將程式碼克隆下來 # 克隆程式碼 git clone https://gitee.com/pocohy/luffy_api.git # 開發新功能,假設我們開發了個s1.py的功能 git add . git commit -m '新增了s1.py' git push origin master # 注意:推送到遠端倉庫時,1.使用者名稱密碼,2.對倉庫有寫許可權 # 在提交之前一定要先拉一下程式碼,保證本地版本庫跟遠端保持一致,是最新 # (以後只要提交程式碼,都要拉一下,沒事就拉一下,保證出現衝突概率小) git pull origin master # 然後再提交到遠端倉庫 git push origin master
二、線上bug分支解決方案
'''
1.我們開發了一個產品,主功能已上線,現在伺服器執行版本是v2
2.然後我們決定開發新功能,於是乎使用dev分支開發
3.忽然發現V2版本有bug,所以我們新建一個bug分支(基於master分支建立bug分支)
4.我們開始改bug,把變更提交到bug分支,然後測試
5.測試完畢合併到master主分支上,這個版本叫v2.1
6.dev分支的新功能開發完了,要合併到master分支,這個版本叫v3
(dev分支和master分支合併,可能會有衝突,也可能沒有)
'''
2.1 解決bug,開發新功能,不出衝突的情況
git branch dev # 本地新建dev分支 git checkout dev # 切換到了dev分支(此時遠端倉庫沒有這個分支) git push origin dev # 把本地dev分支推到遠端 # 開發新功能 vi ss1.py git add . git commit -m 'dev開發了使用者功能' git push origin dev # 把本地dev的更改提交到遠端dev # 繼續開發新功能 vi ss1.py # 加入了一行 git add . git commit -m 'dev開發了訂單' git push origin dev # 把本地dev的更改提交到遠端dev # 測試發現線上系統有bug,去修復bug # 基於master建一個bug分支 git checkout master git branch bug git checkout bug # 切換到bug分支 vi ss2.py # 寫點程式碼 git add . git commit -m 'bug分支修復了' # 本地bug合併到master git checkout master git merge bug # 不會出衝突 git push origin master # 把本地master推送到遠端master,最新v1.11版本釋出 # 切回到dev繼續開發 git checkout dev # 又增加了程式碼 # 把dev合併到master git checkout master git merge dev # 不會衝突 git push origin master # 不會衝突,最新版本釋出
2.2 解決bug,開發新功能,出衝突的情況
# 把所有分支都刪除 git branch dev git checkout dev vi common.py # 寫入程式碼 git add . git commit -m 'dev增加了common.py' # 線上出bug git checkout master git branch bug git checkout bug vi common.py # 寫入程式碼 git add . git commit -m 'bug分支增加了common.py' # 把bug更改合併到master上 git checkout master git merge bug # 不會衝突 # 把dev分支合併到master(衝突) git merge dev # 出衝突 # 解決衝突 (該刪刪,該留留) git add . git commit -m '解決衝突' git push origin master
三、衝突解決
3.1 多人在同一分支協同開發導致衝突
# 員工張三在s1.py第二行增加了一句
print('hello world')
# 然後提交到遠端倉庫
# 員工李四在本地,沒有及時拉程式碼,在s1.py第二行增加了一句
print('hello world')
# 然後李四從遠端倉庫拉取程式碼,就會出現衝突,程式碼如下
<<<<<<< HEAD # 開始,下面是李四的程式碼
print('hello world')
======= # 李四的程式碼結束,下面是張三的程式碼
print('hello world')
>>>>>>> 2e8da99c75814f197f7909d1cf7816adfc4ccd81 # 張三程式碼結束(後面的數字+字母是版本號,可以通過版本號查詢是誰提交的)
'''
衝突的兩種解決辦法
1.如果衝突是同一個功能,跟同事商量,保留某一個人的
2.如果衝突不是同一個功能,保留倆人程式碼
'''
git add .
git commit -m '解決衝突'
git pull origin master #正常來講不會有衝突(存在衝突問題)
git push origin master
3.2 分支合併導致衝突
# 操作就是2.2的操作
四、線上分支合併(pr)
'''
現在我們有master分支和dev分支(本地和遠端都有)
所有人在dev分支開發(有可能出衝突)
現在我們需要合併分支,把dev合併到master上
之前我們使用的方法是本地合併,dev合併到master,然後提交master到遠端
現在我們可以學習新方法!
在線上完成dev合併到master---》提交一個pull request,簡稱pr
'''
# 本地建立dev,提交到遠端
git branch dev # 建立一個dev分支
git checkout dev # 切換到dev分支裡(建立一個s1新檔案,提交到本地倉庫)
git push origin dev # 把dev提交到遠端倉庫
# 在線上完成分支合併
'''
在gitee上切換到dev分支,然後點選 +Pull Request 的按鈕
源分支是需要合併的dev,目標分支就是被合併的master分支,寫好標題內容,提交
然後經過領導測試、稽核,就可以合併分支了
'''
五、遠端倉庫回滾
# 切換到master分支
git checkout master
# 本地恢復到最初狀態
git reset --hard 07f84def3eaa1e4264d16936b699582f7e9d2555版本號
# 提交到遠端(強制提交)
git push origin master -f # 一般不要用
六、使用pycharm操作git
略