1. 程式人生 > 其它 >git分支操作、遠端倉庫、協同開發衝突解決

git分支操作、遠端倉庫、協同開發衝突解決

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分支模型