-
版本控制
- 發(fā)展歷史
- CVS : 遠古時代的版本控制軟件
- SVN : 集中式源代碼管理器
- GIT : 分布式源代碼管理器
- 集中式和分布式版本管理器的區(qū)別
- 集中式版本管理器只在遠程服務器上安裝代碼數(shù)據庫 , 本地只能遠程訪問 , 下載需要的源文件 , 本地將源文件編輯完成 , 再上傳到遠程代碼數(shù)據庫
- 分布式版本管理器在本地也安裝了代碼數(shù)據庫 , 可以在本地進行版本管理 , 將希望上傳的版本上傳至遠程數(shù)據庫
- 集中式版本控制每個文件都有隱藏的文件夾與之對應
- 分布式版本控制只有根目錄會有隱藏文件夾
- 簡介 : 版本管理器就是將我們在編寫代碼時 , 出現(xiàn)的我們需要保留的版本 , 修改的bug , 增加的功能 , 等不同階段的我們希望保留下來的代碼或者編輯記錄 , 通過上傳代碼數(shù)據庫的方式記錄下來 , 方便程序員劃分功勞 , 升級代碼.
-
Git工作原理
工作區(qū)
: 就是.git隱藏文件夾所在的目錄 ,用于存放需要需要管理的源文件 , 我們要想看到隱藏文件夾 , 需要在查看里設置 , 通常我們新建一個項目文件夾 , 在里面初始化倉庫(代碼數(shù)據庫)- 版本庫
版本庫
就是.git文件夾中的內容暫緩區(qū)
: 工作區(qū)的文件要想進行版本管理 , 必須先把它上傳到暫緩區(qū)分支
: 分支就是文件最終的存儲位置 , 默認的分支就是master , 即所有版本控制的文件信息都在master目錄下- head指針 : 指向當前文件的存儲分支 , 默認指向分支master
-
Git單機版使用說明
- 下載git , 驗證有沒有下載成功 , 只需要右擊 , 看會不會多出兩個關于git的選項 , 或者cmd , 在命令行中輸入git [--v] , 查看安裝的git版本
- 創(chuàng)建倉庫 : 首先新建一個項目管理文件夾 , 在文件夾中右擊 , 打開git的終端控制程序 , 輸入
git init
, 即可在此文件夾中創(chuàng)建版本庫 , 驗證有沒有創(chuàng)建成功 , 只需要在查看中勾選顯示隱藏文件夾即可 , 如果當前目錄下出現(xiàn).git文件夾說明創(chuàng)建成功- 配置信息 : 我們需要給這個項目配置相關信息 , 必要的有兩個
- 用戶名 :
git config user.name "用戶名"
- 用戶郵箱(便于其它人聯(lián)系作者) :
git config user.email "郵箱地址"
git config -r
: 查看當前版本庫的配置信息- 在工作區(qū)創(chuàng)建文件(任何類型)
- 將文件添加到版本庫暫緩區(qū) :
git add 文件名
,git add .
(將當前全部文件添加到暫緩區(qū)) >* 查看當前版本庫的狀態(tài) :git status
, 工作區(qū)的文件顯示紅色
, 暫緩區(qū)的文件顯示綠色
, 分支下的文件顯示無色
- 將暫緩區(qū)的文件移到當前分支 :
git commit -m"說明信息"
- 查看提交日志
- 詳細 :
git log
- 簡短 :
git reflog
- 更改文件 : 工作區(qū)中已經提交過的文件如果修改了 , 需要重新提交
- 查看文件最新改動的地方 :
git diff 文件名
,git diff
(查看當前路徑所有文件最新改動的地方)- 讓當前工作區(qū)文件回到上一個版本 :
git reset --hard HEAD^
(一個^代表回到上一個版本) ,git reset --hard HEAD~N
(代表回到上N個版本)- 讓當前工作區(qū)文件回到指定版本 : git reflog(查看版本編號) ,
git reset --hard 版本編號
- 刪除工作區(qū)文件 :
git rm 文件名
- 將刪除文件從版本庫移除(在版本庫中記錄刪除文件操作) :
git commit -m"刪除文件名"
- 設置不能提交的隱私文件 : 企業(yè)開發(fā)專用鏈接(在這里把不同語言中 , 企業(yè)不能提交的文件都設置好了) , 對于個人來說 , 我們需要在工作區(qū)新建 .gitignore文件 , 這個文件需要在當前目錄下 , cmd進入命令行 , 輸入
type NUL > .gitignore
創(chuàng)建 , 將不能提交的文件名稱
放入這個文件夾 , 就不會再版本控制中看到關于這個文件的任何信息
-
Git團隊開發(fā)使用說明
- 概要 : 與單人開發(fā)不同的是 , Git團隊開發(fā)需要多個人同時對項目進行開發(fā) , 項目經理會先在服務器上初始化一個
共享倉庫
, 這個共享倉庫可以在任何存儲設備上 , 區(qū)別在于一個需要通過url下載 , 一個需要通過路徑下載 , 個人只需要將這個共享倉庫下載到本地 , 進行版本控制 , 將可以運行的代碼版本 , 提交到共享倉庫就可以了- 流程 :
- 初始化共享倉庫 :
git init --bare
(不要直接在遠程倉庫寫代碼 , 要程序員寫就可以了 , 他們在遠程服務器上下載倉庫)- 拷貝遠程倉庫到本地 :
git clone 遠程倉庫地址
- 配置 :
git config user.name "你的名稱"
,git config user.email "你的郵箱地址"
- 提交 :
add . / 文件名稱
,git status
(查看是否提交成功) ,git commit -m"我提交的代碼"
(提交到head指針指向的分支 , 默認是master分支)- 更新遠程數(shù)據庫 : 如果遠程數(shù)據庫有更新 , 必須同步到本地 , 才能提交新的代碼 ,
git pull
- 提交到遠程數(shù)據庫 :
git push
- 補充說明 :
git config -l
(以列表的形式查看當前配置) ,git status
(查看工作區(qū)和暫緩區(qū)文件狀態(tài)) ,git diff
(對比工作區(qū)文件和提交文件之間的差異) ,git reset --hard^^ / --hard~N / --hard 版本號
(通過git reflog
查看)
-
Git協(xié)同模型
- 概要 : 有時候由于市場原因 , 老板要求新添加功能 , 但是作為項目經理 , 我不確定這個功能能在項目截至時間內完成 , 我會新開一個分支 , 讓比較牛的人去開發(fā)這個功能 , 新開的分支 , 會繼承主分支的所有內容 , 在開發(fā)完后 , 可以和主分支合并 , 沒有開發(fā)完 , 也不會影響主分支的進程
- 流程
- 查看倉庫有多少分支 :
git branch
( * 代表頭指針指向的分支)- 新建一個分支 :
git branch 分支名稱
- 切換分支 :
git checkout 分支名稱
(新建分支會保存master分支所有記錄)- 合并分支 :
git merge 分支名稱
(將指定分支合并到主分支中)- 刪除分支 :
git branch -d 分支名稱
(刪除指定分支)
-
劃重點
- 單人開發(fā)
- 在工作區(qū)中打開git終端
- 通過git init指令 , 初始化版本庫
- 編寫代碼
- 將編寫的代碼通過git add , 添加到版本庫的暫緩區(qū)
- 通過git commit -m"說明" 將暫緩區(qū)的文件添加到HEAD指針指向的分支中 ( 默認只有一個分支 , master分支 , 也稱之為主分支)
- 通過git log查看我們每次添加修改的內容
- 通過git diff 查看當前文件和版本庫中文件的差異
- 通過git reset --hard 版本號 在任意版本之間切換
- 多人開發(fā)
- 項目負責人在服務器上的工作區(qū)中打開git終端
- 通過git init --bare , 初始化一個共享的版本庫
- 項目負責人通過git clone從遠程服務器上下載共享的版本庫到本地
- 編寫代碼
- 將編寫的代碼通過git add . 添加到版本庫的暫緩區(qū)中
- 通過git commit -m"說明" 將暫緩區(qū)的文件添加到HEAD指針指向的分支中
- 注意 !! 一定不要將不能運行的代碼提交到遠程的版本庫
- 一般情況下 , 在企業(yè)開發(fā)中 , 本地的提交可能稍微頻繁一些 , 但是提交到遠程服務器的操作不會那么頻繁 , 一般情況下一天最多兩次
- 通過 git push 將本地編寫好的代碼提交到遠程服務器的版本庫
- 其它開發(fā)人員可以通過 git clone或者git push從遠程服務器獲取最新的代碼
- 注意點 !!!!
- 在企業(yè)開發(fā)中 , 如果有其它同事往服務器上提交了新的代碼 , 那么我們就沒辦法直接提交 , 如果我們想要提交 , 那么我們必須先將服務器上的代碼更新到本地
- 更新到本地之后 , 如果沒有代碼沖突 , 那么可以直接提交
- 更新到本地之后 , 如果有代碼沖突(在同一個文件的同一行編輯了代碼) , 那么必須先手動解決了沖突 , 才能提交
在企業(yè)開發(fā)中 , 一定要記住 , 千萬不要好幾天都不提交代碼 , 否則后果非常嚴重 , 很多爛屁股等你擦 , 一般情況下 , 一旦分配給自己的某個功能實現(xiàn)了就立即提交到遠程服務器 , 或者分配給你的任務中 , 某個模塊實現(xiàn)了就立即提交到遠程服務器 , 只要保證提交到遠程服務器的代碼是可以運行的就行