1. 程式人生 > >Git程式碼版本管理工具

Git程式碼版本管理工具

Git

Git 是分散式版本控制系統,原始碼管理工具。
作用:
  方便協同開發、方便版本控制

  • 分散式管理:伺服器和客戶端都有版本控制能力,都能進行程式碼的提交、合併、…
  • Git會在根目錄下建立一個.git隱藏資料夾,作為原生代碼倉庫

Git伺服器 --> 本地倉庫 --> 客戶端 --> 本地倉庫 --> Git伺服器
結構劃分為:工作區、版本庫(暫存區、倉庫區)、伺服器雲端;

  • 工作區:
    在IDE中進行檔案的新增、修改、刪除操作;
    檔案新增、修改;
    檔案刪除;
    檔案恢復;

  • 暫存區:
    儲存每天中一小階段的工作,是版本庫的一部分;
    儲存更改記錄;
    檢視記錄git status;

  • 倉庫區:
    在使用者分支上儲存每天的工作;

    • 倉庫區表示個人開發的一個小階段的完成
    • 倉庫區中記錄的各版本是可以檢視並回退的
    • 但是在暫存區的版本一旦提交就再也沒有了
      儲存更改記錄;
      檢視歷史記錄 git reflog;
  • 伺服器:
     儲存每個成員的編碼記錄,每個成員

Git本地倉庫操作:

 本地倉庫是一個.git隱藏檔案

  • 1.安裝Git
    sudo apt-get install git
    git
    檢視安裝結果

  • 2.建立專案
    mkdir demo
    建立資料夾 demo,作為工作專案;

  • 3.初始化本地倉庫 .git
    git init

  • 4.配置個人資訊
    預設資訊:全域性配置裡面的使用者名稱和郵箱 全域性git配置檔案路徑:~/.gitconfig
    git config user.name 'mophite' (可以試試zhangsan -->zhangsangfeng1)
    git config user.email '[email protected]'

  • 5.新建.py檔案體驗一下
    在專案檔案內新建 test.py檔案,git status檢視檔案狀態(紅色表示在工作區,綠色表示在暫存區)。

  • 6.跟蹤檔案(工作區檔案新增到暫存區)

    # 新增專案中所有檔案
    git add .
    # 新增指定檔案
    git add login.py
    
  • 7.提交到倉庫區
    commit會生成一條版本記錄
    -m後面是版本描述資訊
    git commit -m '版本說明'
     提交後,暫存區不再有檔案,檢視狀態:乾淨的工作區。

  • 8.編輯程式碼,再次提交到倉庫區,檢視歷史版本
    程式碼編輯完成後:
    git commit -am "更新說明"
    檢視歷史版本:

    git log		# 不能檢視已經刪除的檔案 commit記錄
    git reflog # 檢視所有分支的所有操作記錄
    
  • 9.版本回滾
    – 方法1
    git reset --hard HEAD^
    hard
    HEAD^(前一個版本)   HEAD^^(前兩個版本) 類推
    HEAD~N (前N個版本)
    – 方法2
    git reset --hard 版本號
    版本號:

  • 10.撤銷修改
    只能撤銷工作區、暫存區的程式碼,不能撤銷倉庫區的程式碼
    撤銷倉庫區的程式碼就相當於回退版本操作

    • 撤銷工作區程式碼
      新加程式碼,沒有add到暫存區,保留在工作區:
      git checkout 檔名
    • 撤銷暫存區程式碼
      新加程式碼,並add到暫存區:
      # 第一步:將暫存區程式碼撤銷到工作區
      git reset HEAD  檔名
      # 第二步:撤銷工作區程式碼
      git checkout 檔名
      
  • 11.對比版本

    • 對比版本庫與工作區
      git diff HEAD -- test.py
      test.py是工作區的程式碼檔案
    • 對比版本庫
      新加程式碼,並add到暫存區
      git diff HEAD HEAD^ -- test.py
  • 12.刪除檔案

    • 在專案中新建test.py檔案,並新增和提交到倉庫

      – 確定刪除處理:

      # 刪除檔案
      rm 檔名
      # git確定刪除檔案,對比新增檔案git add 
      git rm 檔名
      # 刪除後記錄刪除操作版本
      git commit -m '刪除描述'
      

      – 誤刪處理:撤銷修改即可

      # 刪除檔案
      rm 檔名
      # git撤銷修改
      git checkout -- 檔名
      

Git遠端倉庫

https://github.com/

建立github倉庫

1 註冊github賬戶
2 建立倉庫New repository
3 編輯倉庫資訊

repository name 必選
description 專案描述,建議寫上
public 公有專案,免費的
README 專案說明檔案,可選
add gitignore Python
license證書選none,其它的看明白了再選,小心吃官司交罰款
建立倉庫完成

4 檢視倉庫地址
clone or download 選項有一個地址,必須複製下來。
下載別人的,一般都是壓縮包。

克隆專案到本地

  • 1 克隆遠端倉庫
	cd Desktop/manager/
	git clone https://github.com/... .git
  • 2 配置身份資訊
	cd Desktop/manager/test/
	git config user.name '管理者'
	git config user.email '[email protected]'

在config檔案內可以看到

  • 3 推送新建的專案檔案
    在test目錄下,新建demo資料夾,內建demo.py
	# 工作區新增到暫存區
	git add .
	# 暫存區提交到倉庫區
	git commit -m '立項'
	# 倉庫區推送到遠端倉庫
	git push

可以在github網站看到新推送的檔案。

  • 在 push 的時候需要設定賬號與密碼,該密碼則是 github 的賬號與密碼
設定記住密碼(預設15分鐘):
git config --global credential.helper cache
如果想自己設定時間,可以這樣做(1小時後失效):
git config credential.helper 'cache --timeout=3600'
長期儲存密碼:
git config --global credential.helper store
pycharm編輯器可以自動記住密碼
  • 4 同步伺服器程式碼
    git pull

  • 5 關聯到遠端庫

    git remote add origin 你的遠端庫地址
    如:
    git remote add origin https://github.com/xxx.git

  • 6 獲取遠端庫與本地同步合併(如果遠端庫不為空必須做這一步,否則後面的提交會失敗)
    git pull --rebase origin master

  • 7 本地庫內容上傳到雲端,把當前分支master推送到遠端。輸入使用者名稱、密碼,驗證通過後即開始上傳。
    git push -u origin master

按照上述步驟,同一時間只有一人對程式碼進行操作,可以進行協同開發。

步驟總結:
 1 進入倉庫
 2 同步下拉程式碼:git pull
 3 本地倉庫記錄版本:git commit -am ‘版本描述’
 4 推送程式碼到伺服器就執行:git push
 5 編輯程式碼前要先pull,編輯完再commit,最後推送是push
但是:
 不可避免錯誤異常,下文。

程式碼衝突

積微於末,甚於雪崩
多人協同開發,不可避免,程式碼衝突問題。
多人同時修改某一檔案,後上傳的,無法正常上傳
會影響正常開發進度,一旦出現程式碼衝突,必須馬上解決再進行下一步開發工作。

  • 減少衝突的操作方式
    養成良好的操作習慣,先pull在修改,修改完立即commit和push
    一定要確保自己正在修改的檔案是最新版本的
    各自開發各自的模組
    如果要修改公共檔案,一定要先確認有沒有人正在修改
    下班前一定要提交程式碼,上班第一件事拉取最新程式碼
    一定不要擅自修改同事的程式碼

  • 解決衝突
    1 協商解決,誰衝突誰解決
    2 保留所有程式碼,保留一人程式碼
    3 解決完,依然需要add、commit、push,在版本描述記錄下來

標籤

大的版本完成更新,對程式碼進行打包,加上版本標籤。(備份大版本程式碼)

  • 打標籤
    本地:
    git tag -a 標籤名 -m '標籤描述'
    推送到遠端:
    git push origin 標籤名
    可以在遠端github網站檢視標籤結果
  • 刪除標籤
	# 刪除本地標籤
	git tag -d 標籤名
	# 刪除遠端倉庫標籤
	git push origin --delete tag 標籤名

分支

master 分支 --> v1.0 --> v2.0 -->
dev 分支(開發版本) --> 開發新功能模組 --> 可以合併dev到master

檢視當前分支:
git branch
建立並切換到dev分支:
git checkout -b dev
設定跟蹤(將分支推送到遠端):
git push -u origin dev
管理分支的程式碼:
add、commit、push
操作一樣,但是和主分支是相互獨立的。
分支合併:
 1 先切換到master分支:checkout
  git checkout master
 2 dev分支合併到master分支:merge
  git merge dev
 3 推送合併分支:
  git push
 4 提醒他人下拉雲端程式碼
  git pull