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遠端倉庫
建立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