Python實戰專案5-Git遠端倉庫/分支合併/衝突解決

2023-03-02 18:02:51

Git分支

為什麼要有分支
	可以保證主分支的版本都是可以檢視的版本
	我們都在開發分支開發,開發完成 合併程式碼

分支操作

分支檢視 git branch
分支建立 git branch 分支名
分支切換git checkout 分支名
分支刪除 git branch -d 分支名

分支合併

  • 建立分支 git branch dev
  • 切換到分支 git checkout dev
  • 在 dev環境中進行編輯

合併(重要)

將dev 合併進 master 分支 
1. git branch checkout master
2. git merge dev 把dev合併到master上

分支合併可能會出衝突(如果master 和 dev 分支 同時修改了相同的程式碼
進行合併操作的時候,git不清楚到底要保留誰的修改,所以會衝突
)

公司內分支方案:小公司
-master分支,dev分支,bug分支  >>> 所有人在dev分支開發,開發完成合併到主分支
-master分支,dev分支,bug分支  >>> 個人分支,個人在個人分支上開發

Git遠端倉庫

把原生的版本提交到遠端倉庫
# github|gitee|gitlab

我們以gitee作為遠端倉庫

專案已經寫好了一部分功能,所以我們需要將程式碼提交到遠端倉庫

https連線遠端倉庫

操作步驟
本地:
1.先在檔案目錄下 git init 初始化倉庫
2. 建立.gitignore 忽略檔案 (忽略 紀錄檔 idea scripts資料夾 ...)

3.git status 檢視狀態
4.git add . 提交到暫存區
5.git commit -m '註釋'

至此已經提交此版本到本地版本庫(被版本管理了)了

**遠端:
**1.建立遠端倉庫,gitee上新建倉庫

2.填寫資訊,保證倉庫是空的(會出現教學)

按照遠端提示的步驟操作 (全域性設定)

  • git config --global user.name 'xxx'
  • git config --global user.name 'xxxxx@xxx'

因為我們已有原生的倉庫,
3.已有倉庫(遠端提交)
git remote add origin 遠端倉庫地址
把本地版本庫推播到遠端倉庫
把本地當前所在分支推播到 origin 對應的遠端master上
git push origin 分支名

第一次進入需要輸入密碼(確認使用者)
輸入自己的gitee賬號密碼(只需要輸入一次本地就會進行儲存 以後就不需要在進行登入的校驗了~)

windows電腦儲存在憑據管理處

如果我們已經提交到版本庫,但是又需要進行做.gitignore忽略檔案的操作,我們可以這樣操作
1.將紀錄檔檔案提交到版本庫
2..gitignore寫上該檔案的忽略,刪除紀錄檔檔案, 因為我們刪除了這個紀錄檔檔案,會被git檢測到
3.我們再次進行 git add . git commit -m '' 再次出現的檔案就不會被管理了

ssh方式連線遠端倉庫

http協定提交:
上面我們提交程式碼 輸入了使用者名稱/密碼 才可以提交上去

  • 使用的是http協定提交的程式碼

ssh方案:
需要公鑰和私鑰

  • 私鑰在本地儲存,公鑰設定到gitee上,以後再提交程式碼,就不需要其他任何認證了

使用步驟:
先要生成公鑰私鑰:
生成教學

  • 生成在C槽/使用者/ .ssh資料夾中 兩個檔案,一個公鑰,一個私鑰

公鑰設定在gitee上

  • 因為我們之前的遠端倉庫地址origin對應的地址是 https協定的
  • 現在我們需要使用shh提交程式碼,需要把原先的地址刪除
  • git remote remove 倉庫名 刪除原先提交地址
  • git remote add 倉庫名 ssh地址 新增提交地址

協同開發

倉庫管理員已經建立了倉庫,對倉庫有各種許可權
我們要進行多人開發 但是它們在自己的倉庫中,並不能看到我自己的專案
我們倉庫管理員需要把開發人員設定為該倉庫的開發者,
設定完成後,在開發人員 的倉庫中就能看到這個專案了
倉庫管理員,邀請開發者進入【邀請的開發者,對這個倉庫就有讀寫許可權,它們就可以開發程式碼/提交

開發者本地沒有程式碼
1.需要把程式碼從遠端倉庫 clone 下來
git clone [email protected]:liuqingzheng/luffy_api.git


2.使用pycharm開啟,設定好直譯器,安裝依賴
3.開發完程式碼:
git add
設定使用者名稱和郵箱(區域性)
區域性設定的使用者名稱密碼 存 在.git 檔案中的 config 檔案中
git config user.name xx
git config user.email xx@xx
全域性的儲存在C/使用者/gitconfig檔案中
git commit -m '註釋'
git push origin master

衝突解決

原因:
1.多人在同一分支開發
2.分支合併出現衝突

"""
衝突出現的例子:
	張三
	git pull origin master --拉下來專案

    修改檔案部分內容(檔案最後一行print(123))

    git add .

    git commit -m '註釋'

    git push origin master

    李四
	git pull origin master --拉下來專案

    修改檔案部分內容(檔案最後一行print(123))

    git add .

    git commit -m '註釋'

    git push origin master
"""
這樣就會引起衝突,git 會有衝突資訊的提示
先把衝突位置箭頭去掉,閱讀程式碼,選擇保留或刪除別人或自己的程式碼
再次對程式碼提交到遠端倉庫,這樣的話就可以解決合併衝突問題
衝突出現的時候:
	如果要刪除別人的程式碼,你需要跟別人說一聲
    <<<<<<< HEAD   我的程式碼
    print('劉亦菲')
    =======   它的程式碼
    print('彭于晏')
    >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5

避免出現衝突:

如果想要少出現衝突,需要勤拉取程式碼,注意自己程式碼與主體程式碼更新頻率

'''
例子衝突出現的原因2:
-我:
    1 建立dev分支 
        git branch dev
    2 在dev分支的views.py 中第2行加入程式碼
    3 提交到本地倉庫
        
        
-別人:
    1 在主分支的views.py 中第2行加入程式碼
    2 提交到版本庫
    3 在主分支合併程式碼  git merge dev
    4 衝突了,解決衝突
    5 再提交程式碼,到此結束
'''

線上分支合併

線下合併分支
git merge dev
線上合併分支
我們可以在gitee上新建分支
本地同步遠端dev分支
git pull origin dev 拉下來了, 還看不到,只有切過去才能看到
git checkout dev 切換分支到dev
我們在dev上面開發程式碼,隨便新增程式碼
提交到版本庫後
我們需要推到遠端倉庫的dev分支
git push origin dev

master中沒有程式碼,dev中有提交的,現在要線上分支合併
把遠端的dev合併進遠端的master
 提交pr    提交rr
在網站上,申請提交pull request
領導稽核,測試,通過後,點選合併
線上dev分支就合併進線上的master分支了

遠端倉庫回滾

最好不要用
如果我們想要遠端的程式碼回到某一個版本
步驟:
1.本地版本回退
git reset --hard 版本號
2.強行推到遠端
git push origin master -f