git分支操作、遠端倉庫、協同開發衝突解決
阿新 • • 發佈:2022-02-22
git分支操作、遠端倉庫、協同開發衝突解決
複習
# 網際網路專案:主站(網際網路使用者看的)--》前後端發呢裡,後臺管理(RBAC)---》混和(simpleui),前後端分離(django-vue-admin) # 後臺管理---》simpleui---》基於admin,美化了介面 -安裝---》在app中註冊---》第一個位置 -二次開發:左側側邊欄可以通過配置檔案定製---》原來有地址(只要在admin中註冊) -寫自己的:直接配置好路由即可(混合開發) -給頁面增加按鈕--->admin的類中即可 -監控大屏(html,css,js) # git介紹:版本管理軟體 -協同開發 -版本進行管理 # git 和 svn -分散式管理:遠端服務掛掉了,本地也可以管理程式碼 -集中式管理:遠端服務掛掉了,就不能進行版本管理了 # git ,github,gitee,gitlab # 安裝---》一路下一步 # 使用:記住的-->工作區---》暫存區---》版本庫 -git init -git add . -git commi -m '註釋' -git status -git log # 內容多 -git reflog # 更全,簡潔 -git checkout . # 工作區回退 --->工作區修改了程式碼(新增的檔案不管) -git reset HEAD . # 把綠變紅(從暫存區拉回到工作區) -git reset --hard 版本號 # 把工作區的內容,切換到某個版本上 # 忽略(過濾) -倉庫中有一些檔案不想被版本管理,不想提交到遠端 -倉庫根路徑新建.gitignore -寫入規則 /資料夾名字 s1.py *.py .idea *.pyc __pycache__
1 git分支操作
# 1 建立分支 git branch dev # 2 檢視分支(本地) git branch # * master 目前只有master分支,當前在哪個分支 # 3 切換分支 git checkout dev # 4 建立並切換 git checkout -b 分支名 # 5 刪除分支 git branch -d 分支名 # 6 檢視遠端分支 # 7 合併分支 git merge dev # 目前在master上,把dev合併到master # 練習 105 git branch dev 106 git checkout master 107 git branch 108 git checkout bug 109 git status 110 git add . 111 git commit -m '修復了bug,新增了bug.txt,在xx.txt中新增了一行' 112 git checkout master 113 git merge bug 114 git checkout dev 115 git status 116 git add . 117 git commit -m 'dev分支:sss.txt新增了一行' 118 git status 119 git checkout master 120 git merge dev 121 git branch
2 遠端倉庫
2.1 倉庫建立者---》程式碼是我提交的
# github,gitee,gitlab ##### 操作步驟 #1 註冊gitee賬號 -部分公司的程式碼,是託管在gitee上的 #2 建立一個遠端倉庫 -後端專案和前端專案放到兩個倉庫 #3 本地倉庫,提交到遠端(需要保證,遠端倉庫是空的) -3.1設定賬號和郵箱 git config --global user.name "zhangshihu" git config --global user.email "[email protected]" -3.2本地沒有倉庫 mkdir luffy_back cd luffy_back git init touch README.md git add README.md git commit -m "first commit" git remote add origin https://gitee.com/zhangshihutop/luffy.git git push origin master -3.2本地有倉庫 # 進入專案的目錄 cd xxx # 新增遠端倉庫,git remote add ,origin:起了個名字,地址是:https://gitee.com/liuqingzheng/luffy_back.git # 以後origin就代指這個地址 git remote add origin https://gitee.com/zhangshihutop/luffy.git # 把本地的master提交到origin地址 git push origin master # 輸入 gitee的賬號和密碼(一旦輸入過一次,會在作業系統上記錄下,以後不用輸入了,憑據管理)
2.2 普通開發者--->倉庫已經建好了
# 倉庫已經存在了---》基於倉庫繼續開發
# git clone https://gitee.com/zhangshihutop/luffy.git 你領導發給的 直接克隆到本地
# 使用pycharm開啟,繼續開發即可
git add .
git commit -m '提交'
# git remote 檢視遠端倉庫
git push origin master # 克隆下來的自動匹配上
3 ssh協議連線遠端源
# 公司裡常用的
-只需要配置好公鑰,私鑰,以後不需要使用使用者名稱密碼了
# 生成公鑰,私鑰
ssh-keygen -t ed25519 -C "[email protected]"
id_ed25519.pub 公鑰
id_ed25519 私鑰
# 生成後,把公鑰配置在遠端倉庫
-我的(頭像)--->設定---》ssh公鑰---》配置上剛剛生成的公鑰
-表示我這臺機器,不需要輸入使用者名稱密碼就可以操作我的gitee賬號了(提交,拉取程式碼)
-現在刪掉憑據,再提交程式碼,還需要輸入使用者名稱密碼?
-git remote add origin https://gitee.com/zhangshihutop/luffy.git
-git remote 檢視遠端倉庫
-git remote remove origin # 刪除origin這個遠端倉庫
# 重新配置遠端倉庫
git remote add origin [email protected]:zhangshihutop/luffy.git
# 修改程式碼
git add .
git commit -m ''
git push origin master # 第一次輸入yes,以後都不用了,因為已經配好ssh了
4 協同開發
# 多個人同時開發一個專案,既要做好版本的管理,又要做好程式碼的合併
"""
1)作為開發者,第一次同步專案(前臺已經是專案開發者了)
>: git clone 專案地址
2)本地開發的程式碼,必須add、commit到本地版本庫後,才和遠端倉庫進行互動
4)互動順序:必須 先拉(pull)後提(push) 時不時pull一下
5)必須切換到要互動的分支,在與遠端同名的分支進行互動,如本地dev與遠端dev互動
>: git checkout dev
>: git add .
>: git commit -m '本次提交的資訊提示'
>: git pull origin dev 拉程式碼
>: git push origin dev 上傳程式碼
"""
5 衝突解決
# 分支合併
# 協同開發,共同操作同一個分支
# 你們剛到公司,可能只給你訪問許可權---》只能看,不能提交
# 多個人再同一個分支上開發---》出的衝突
<<<<<<< HEAD # 你的程式碼
print('迪迦')
======= # 遠端別人的程式碼
print('泰羅')
>>>>>>> 363ecd639982a9c539c7280bd37e68d2822911ff
# 肯定是改了共同的程式碼才出的衝突--->保留某個人或者兩個都保留
git add .
git commit -m
git push origin master
###### 分支合併衝突
git branch dev 建立分支dev
git branch bug 建立分支bug
git checkout bug 切換分支
# 修改程式碼(bug分支)
git add .
git commit -m '註釋'
# 切換回主
git checkout master
# 合併(現在沒有問題,合併成)
git merge bug
# 切到dev分支
git checkout dev
# 改同一行程式碼
git add .
git commit -m '註釋'
# 切換回主
git checkout master
# 合併(現在有衝突)--->解決衝突 看具體是改錯了 還是改重複了 留下有用的
git merge dev
git add .
git commit -m '註釋'
6 線上分支合併
# 遠端:master和dev分支
# 本地:master和dev分支
# 我們都在dev分支開發---》本地的dev---》開發完了提交到遠端的dev----》要把遠端的dev合併到遠端的master
# 提交pr(pull request),提交合並分支請求 ####
# 遠端建立一個dev分支
# 本地只需要
git checkout dev # 自動把遠端dev拉下來,切換到本地dev上
# 再本地dev開發,提交到遠端dev
# 修改程式碼
git add .
git commit -m 'dev改了'
# 提交到遠端dev
git push origin dev # 把現在在的本地分支(dev),提交到遠端的dev
面試常問問題
# 你知道git rebase (git 變基)
-我知道,但我們用的merge的普通合併 git log 所有日誌記錄
-變基 只看到合併的那條 是否顯示之前分支的版本記錄 不想顯示就用它 會簡潔一些
# 你知道git flow嗎?
-知道,但是我們沒用
-我們用的就是master,dev,bug分支模型