Git 使用教學

2023-03-02 21:01:41

一、git安裝、介紹和使用

介紹:

用來做程式碼管理(檔案管理)

  • 1、幫助開發者合併開發的程式碼

  • 2、如果出現衝突程式碼的合併,會提示後提交合並程式碼的開發者,讓其解決衝突

  • 3、程式碼版本管理

程式碼管理軟體分為兩種

  • git 目前使用的最多
  • svn

git 與svn比較

  • svn:整合式管理,伺服器端掛掉就做不了版本管理、程式碼合併
  • git:分散式管理,伺服器端掛掉,本地還可以繼續做版本管理,程式碼合併

git安裝:

# 1、安裝地址:https://git-scm.com/download/win

# 2、下一步,完成安裝

# 3、檢查是否安裝完成
	1.在cmd輸入git命令 檢查是否安裝完成
	2.滑鼠右鍵,單擊桌面 檢視是否有git開啟方式

1、git、gitee、github、gitlab

- git:
	# 版本管理軟體,裝在作業系統上,有很多命令

- gitee:
    # 國內最大的開源遠端倉庫
    # 小公司---》使用gitee的私有倉庫
    # 遠端倉庫:開原始碼,私有程式碼,有個網站,可以看到有哪些開原始碼,通過網站做一些設定
 
- github:
	# 國際上最大的開源遠端倉庫
	# 遠端倉庫:開原始碼,私有程式碼,有個網站,可以看到有哪些開原始碼,通過網站做一些設定
    
- bitbucket:
 	# 只有私有倉庫
	# 遠端程式碼倉庫

- gitlab:
	# 公司內部的遠端倉庫

2、git使用流程

# git分為三個區
    -工作區    存放檔案的地方
    -暫存區    工作區的變更,提交到暫存區
    -版本庫    暫存區的內容,提交到版本庫
 
# 三個區相互操作
	-下面學的命令,就是在操作這三個區

3、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記錄
"""

4、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空檔案

5、git多分支

什麼是多分支:

通過建立分支,來保證每個階段的專案都可以順利執行,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
      	# 分支合併可能會出現衝突 ---- 下面講解
        

6、git遠端倉庫

簡介:

將原生的版本庫提交到遠端倉庫

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憑據管理中

'''

7、ssh連結遠端倉庫

什麼是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複製
    

8、協同開發

什麼是協同開發:

建立倉庫之後,可以邀請多人協同開發,通過設定倉庫內成員身份(開發者),對倉庫程式碼具有讀寫權力

協調開發 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

9、解決衝突

什麼是衝突:

當多人對同一分支程式碼進行操作時,如果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 再提交程式碼,到此結束

如何避免衝突:勤拉去程式碼可以減少衝突的出現

10、線上合併分支

# 線下分支合併
	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了

11、遠端倉庫回滾

# 你不要用
# 想遠端的程式碼,是最初的狀態

# 步驟:
    1 本地版本回退
    	git reset --hard 版本號

    2 強行推到遠端
    	git push origin master -f