介紹:
用來做程式碼管理(檔案管理)
1、幫助開發者合併開發的程式碼
2、如果出現衝突程式碼的合併,會提示後提交合並程式碼的開發者,讓其解決衝突
3、程式碼版本管理
程式碼管理軟體分為兩種:
git 與svn比較:
git安裝:
# 1、安裝地址:https://git-scm.com/download/win
# 2、下一步,完成安裝
# 3、檢查是否安裝完成
1.在cmd輸入git命令 檢查是否安裝完成
2.滑鼠右鍵,單擊桌面 檢視是否有git開啟方式
- git:
# 版本管理軟體,裝在作業系統上,有很多命令
- gitee:
# 國內最大的開源遠端倉庫
# 小公司---》使用gitee的私有倉庫
# 遠端倉庫:開原始碼,私有程式碼,有個網站,可以看到有哪些開原始碼,通過網站做一些設定
- github:
# 國際上最大的開源遠端倉庫
# 遠端倉庫:開原始碼,私有程式碼,有個網站,可以看到有哪些開原始碼,通過網站做一些設定
- bitbucket:
# 只有私有倉庫
# 遠端程式碼倉庫
- gitlab:
# 公司內部的遠端倉庫
# git分為三個區
-工作區 存放檔案的地方
-暫存區 工作區的變更,提交到暫存區
-版本庫 暫存區的內容,提交到版本庫
# 三個區相互操作
-下面學的命令,就是在操作這三個區
1.管理檔案:
# 1、開啟需要被git管理的檔案
# 2、右鍵單擊 git bash here
# 3、輸入命令 git init
# 4、被管理的資料夾中出現 .git資料夾
'''
也可以直接在cmd中輸入命令指定需要被管理的檔案路徑
'''
2.檢視檔案變化:
1、在被git管理的檔案下開啟git命令視窗
git status
# 看到有兩種顏色
-紅色:工作區變化了,但是沒有提交到暫存區
-綠色:已經提交到暫存區,沒有提交到版本庫
-沒有:所有東西都在版本庫中了[所有檔案都被git管理起來了]
3.把檔案移交到暫存區:
1、把工作區變更的檔案(紅色的檔案)提交到暫存區
git add . # . 提交所有變更的檔案
dit add 檔名 # 指定某個檔案提交
2、把暫存區的檔案拉回到工作區[由綠變紅]
git reset HEAD
3、把工作區的變更,回退 【還沒有放到暫存區】
-增加的內容,刪除
git checkout .
3.把暫存區檔案提交到版本庫:
1、將暫存區的檔案提交到版本庫(作為一個版本)
git commit -m '註釋' # 註釋內容必須填寫
4.設定作者:
1、將暫存區的檔案提交到版本庫,必須設定作者
# 全域性作者 所有檔案提交版本都用此作者
git config --global user.email "郵箱"
git config --global user.name "作者名字"
# 區域性作者 當前檔案提交版本用此作者
git config user.email "作者郵箱"
git config user.name "作者名字"
4.檢視版本庫,下載版本庫:
1、檢視版本庫:
git log # 檢視詳細的版本庫 可以看到提交人,詳細的commit資訊
git reflog # 檢視簡單的版本庫,
2、迴歸到某個版本
-只要被版本管理了,可以回退到任意版本
git reset --hard 版本號
總結:
記住的:
git add # 工作區---》提交到暫存區
git commit -m # 暫存區--》提交版本庫
git reset --hard 版本號 # 迴歸版本
會用:
git init # 管理資料夾
git status # 檢視被管理的檔案情況
git log # 檢視版本庫 詳細
git reflog # 檢視版本庫 簡略
瞭解:
git checkout . # 回滾工作區的內容
git reset HEAD # 將暫存區的回到工作區
git config --global user.email "[email protected]" # 設定作者
"""
1)有紅色資訊(工作區有內容),就執行 add
2)全綠資訊(內容全部在暫存區),才執行 commit
3)只有被版本庫控制的程式碼,才能被監聽,所以可以回滾到任何一個版本
空資料夾不會被git記錄
"""
# 咱們專案中,有些檔案,或資料夾不想被git管理
-比如:
-node_models
-.idea
-xx.pyc # python 的編譯檔案
# 使用步驟
-1 在倉庫目錄下 .git 所在目錄下 新建 .gitignore
-2 在裡面寫忽略檔案
mode_models # 直接忽略該檔案
.idea # 忽略.idea檔案
*.pyc # 忽略 xxx。pyc結尾的檔案
*.log # 同上
-3 寫的就會被忽略
-4 已經被管理過的不會被忽略
# 忽略檔案寫法
檔案或資料夾名:代表所有目錄下的同名檔案或資料夾都被過濾
/檔案或資料夾名:代表倉庫根目錄下的檔案或資料夾被過濾
例如:
a.txt:專案中所有a.txt檔案和資料夾都會被過濾
/a.txt:專案中只有根目錄下a.txt檔案和資料夾會被過濾
/b/a.txt:專案中只有根目錄下的b資料夾下的a.txt檔案和資料夾會被過濾
*x*:名字中有一個x的都會被過濾(*代表0~n個任意字元)
空資料夾不會被提交,空包會被提交,包可以被提交(包中有一個init空檔案
什麼是多分支:
通過建立分支,來保證每個階段的專案都可以順利執行,master分支(主分支)用來存放每一階段完成的專案,dev(開發分支)用來開發專案,當dev分支程式碼編寫完成時,將完成的程式碼合併到master分支上,接著再回到dev分支開發程式碼,直到專案完全編寫出來,這樣的好處是每一個階段的程式碼都可以執行
公司常用分支方案:小公司
- master分支、dev分支、bug分支:
在dev分支發開程式碼,開發完成合併到master分支,master分支出現bug到bug分支修復
- master分支、dev分支、bug分支 、個人分支
在個人分支上開發,開發完成合併到dev分支
常用分支操作:
- 檢視已建立的分支:
git branch
- 建立分支:
git branch 分支名
- 切換分支:
git checkout 分支名
- 刪除分支:
git branch -d 分支名
- 合併分支:(重要)
例如: 把dev分支合併到master分支
1、先來到master分支: git checkout master
2、執行合併分支命令: git merge dev
# 分支合併可能會出現衝突 ---- 下面講解
簡介:
將原生的版本庫提交到遠端倉庫
gitee搭建遠端倉庫: 操作步驟:
本地:
1 在 luffy_api 專案敲 git init
2 設定忽略檔案(.gitignore)
3 git add .
4 git commit -m '第一次提交'
------提交到了本地版本庫-------被版本管理了
遠端:
1 建立gitee賬號
2 建立倉庫:gitee上建立倉庫,右上角 +
3 填一些資訊,保證倉庫是空的
本地:
1 安裝遠端提示的步驟操作
2 設定使用者和郵箱
3 咱們是已有倉庫
# 新增一個遠端倉庫地址名字叫origin,地址是xxx
git remote add origin https://gitee.com/liuqingzheng/luffy_api.git
# 把原生的版本庫推播到遠端倉庫
# 把本地當前所在分支,推播到 origin 對應的遠端的master上
git push origin master
# 需要輸入使用者名稱密碼,輸入一次,以後就不用輸入了(本地儲存了:憑據管理)
'''
1、填寫的密碼會被存放在本機的Windows憑據管理中
'''
什麼是ssh:
通過公鑰私鑰的方式連結遠端倉庫,不用在通過賬號密碼的方式連結
-私鑰在本地儲存
-公鑰設定到gitee上
-以後再提交程式碼,不需要其他任何認證
使用步驟:
- 1、生成公鑰私鑰:https://gitee.com/help/articles/4181
- 2、在cmd視窗輸入命令
-ssh-keygen -t ed25519 -C "[email protected]"
-生成在:C:\Users\Administrator\.ssh # 兩個檔案,一個公鑰,一個私鑰(帶字尾)
- 3、把公鑰,設定在gitee上
開啟公鑰檔案,複製內容到gitee中設定
- 4、之前origin對應的地址是 https的,現在要使用ssh提交程式碼,需要把它刪除,再增加成ssh的協定
git remote remove origin
git remote add origin 'ssh地址' # ssh地址可在倉庫下載地址中選擇ssh複製
什麼是協同開發:
建立倉庫之後,可以邀請多人協同開發,通過設定倉庫內成員身份(開發者),對倉庫程式碼具有讀寫權力
協調開發 clone 程式碼:
作為開發者,加入倉庫後,第一件事需要將倉庫內的程式碼 clone (克隆)下來,然後進行操作
1、將程式碼從遠端倉庫 clone 下來
git clone 倉庫地址 # 可以選擇clone的方式 例如:ssh連結,預設http
2、使用pycharm開啟clone的程式碼,設定好直譯器,安裝專案依賴
協調開發 push 程式碼:
程式碼編輯完成後,需要將程式碼 push(推)至遠端倉庫
1、git add . # 先add至工作區
2、git commit -m 註釋 # 新增至本地版本庫
3、設定使用者名稱和郵箱
git config user.name 作者
git config user.email 郵箱
4、將程式碼push至遠端倉庫
git push origin master
什麼是衝突:
當多人對同一分支程式碼進行操作時,如果A已經push到遠端倉庫,那麼B就無法跨過A的本本就行push,需要先將A的程式碼pull(拉)至本地,然後才能進行push,但是這樣就會出現問題,加入A和B當前操作的程式碼都一樣,這時就會出現衝突,衝突會將兩人相同或重疊部分的程式碼進行標註
衝突的樣子:
# 多人在同一分支開發衝突
-張三:
git pull origin master
在requirements.txt,最後一行加入 lqz
git add .
git commit -m
git push origin master
-我:
在requirements.txt,最後一行加入 lqz
git add .
git commit -m
git pull origin master
# 衝突了
# 解決衝突 衝突的 箭頭去掉,閱讀程式碼,選擇保留或刪除別人或自己的程式碼,再提交
# 提交到遠端倉庫,這是解決後的
# 衝突出現的樣子:你如果要刪除別人的程式碼,你需要跟別人說一聲
<<<<<<< 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上開發開發
隨便加程式碼
git add
git commit
# 提交到原生的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