【軟件開發(fā)】版本管理Git
Start:關(guān)注本公眾號(hào)后,可直接聯(lián)系后臺(tái)獲取排版美化的詳細(xì)文檔!
Hints:本篇文章所編纂的資料均來(lái)自網(wǎng)絡(luò),特此感謝參與奉獻(xiàn)的有關(guān)人員。
Git的基本簡(jiǎn)介:
Git 是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持。
Git的基本概念:
工作區(qū):就是你在電腦里能看到的目錄。
暫存區(qū):英文叫 stage 或index。一般存放在 .git 目錄下的index 文件(.git/index)中,所以我們把暫存區(qū)有時(shí)也叫作索引(index)。
版本庫(kù):工作區(qū)有一個(gè)隱藏目錄 .git,這個(gè)不算工作區(qū),而是 Git 的版本庫(kù)。

-圖中左側(cè)為工作區(qū),右側(cè)為版本庫(kù)。在版本庫(kù)中標(biāo)記為 "index" 的區(qū)域是暫存區(qū)(stage/index),標(biāo)記為 "master" 的是 master 分支所代表的目錄樹。
-圖中我們可以看出此時(shí)"HEAD" 實(shí)際是指向 master 分支的一個(gè)"游標(biāo)"。所以圖示的命令中出現(xiàn) HEAD 的地方可以用 master 來(lái)替換。
-圖中的 objects 標(biāo)識(shí)的區(qū)域?yàn)?Git 的對(duì)象庫(kù),實(shí)際位于 ".git/objects" 目錄下,里面包含了創(chuàng)建的各種對(duì)象及內(nèi)容。
-當(dāng)對(duì)工作區(qū)修改(或新增)的文件執(zhí)行 gitadd 命令時(shí),暫存區(qū)的目錄樹被更新,同時(shí)工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對(duì)象庫(kù)中的一個(gè)新的對(duì)象中,而該對(duì)象的ID被記錄在暫存區(qū)的文件索引中。
-當(dāng)執(zhí)行提交操作(git commit)時(shí),暫存區(qū)的目錄樹寫到版本庫(kù)(對(duì)象庫(kù))中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹就是提交時(shí)暫存區(qū)的目錄樹。
-當(dāng)執(zhí)行 git resetHEAD 命令時(shí),暫存區(qū)的目錄樹會(huì)被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響。
-當(dāng)執(zhí)行 git rm--cached <file> 命令時(shí),會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
-當(dāng)執(zhí)行 gitcheckout . 或者 git checkout -- <file> 命令時(shí),會(huì)用暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個(gè)操作很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)中的改動(dòng)。
-當(dāng)執(zhí)行 gitcheckout HEAD . 或者 git checkout HEAD<file> 命令時(shí),會(huì)用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng)。
Git的工作流程:

工作流程如下:
克隆 Git 資源作為工作目錄。
在克隆的資源上添加或修改文件。
如果其他人修改了,你可以更新資源。
在提交前查看修改。
提交修改。
在修改完成后,如果發(fā)現(xiàn)錯(cuò)誤,可以撤回提交并再次修改并提交。
Git的基本操作:

git clone、gitpush、git add 、gitcommit、git checkout、gitpull
-workspace:工作區(qū)
-staging area:暫存區(qū)/緩存區(qū)
-local repository:版本庫(kù)或本地倉(cāng)庫(kù)
-remote repository:遠(yuǎn)程倉(cāng)庫(kù)
創(chuàng)建倉(cāng)庫(kù)命令
命令 | 說(shuō)明 |
git init | 初始化倉(cāng)庫(kù) |
git clone | 拷貝一份遠(yuǎn)程倉(cāng)庫(kù),也就是下載一個(gè)項(xiàng)目。 |
提交與修改
Git 的工作就是創(chuàng)建和保存你的項(xiàng)目的快照及與之后的快照進(jìn)行對(duì)比。
下表列出了有關(guān)創(chuàng)建與提交你的項(xiàng)目的快照的命令:
命令 | 說(shuō)明 |
git add | 添加文件到倉(cāng)庫(kù) |
git status | 查看倉(cāng)庫(kù)當(dāng)前的狀態(tài),顯示有變更的文件。 |
git diff | 比較文件的不同,即暫存區(qū)和工作區(qū)的差異。 |
git commit | 提交暫存區(qū)到本地倉(cāng)庫(kù)。 |
git reset | 回退版本。 |
git rm | 刪除工作區(qū)文件。 |
git mv | 移動(dòng)或重命名工作區(qū)文件。 |
提交日志提交日
命令 | 說(shuō)明 |
git log | 查看歷史提交記錄 |
git blame <file> | 以列表形式查看指定文件的歷史修改記錄 |
遠(yuǎn)程操作
命令 | 說(shuō)明 |
git remote | 遠(yuǎn)程倉(cāng)庫(kù)操作 |
git fetch | 從遠(yuǎn)程獲取代碼庫(kù) |
git pull | 下載遠(yuǎn)程代碼并合并 |
git push | 上傳遠(yuǎn)程代碼并合并 |
列出分支基本命令:
git branch
切換分支命令:
git checkout (branchname)
創(chuàng)建新分支并立即切換到該分支下,從而在該分支中操作。
git checkout -b (branchname)
創(chuàng)建分支命令:
git branch (branchname)
刪除分支命令:
git branch -d (branchname)
分支合并
一旦某分支有了獨(dú)立內(nèi)容,你終究會(huì)希望將它合并回到你的主分支。你可以使用以下命令將任何分支合并到當(dāng)前分支中去:
git merge
以列表形式查看指定文件的歷史修改記錄。
git blame <file>
Git 標(biāo)簽
git tag -a <tagname>
指定標(biāo)簽信息命令
git tag -a <tagname> -m "runoob.com標(biāo)簽"
要查看當(dāng)前配置有哪些遠(yuǎn)程倉(cāng)庫(kù),可以用命令:
git remote
從遠(yuǎn)程倉(cāng)庫(kù)下載新分支與數(shù)據(jù):
git fetch
推送你的新分支與數(shù)據(jù)到某個(gè)遠(yuǎn)端倉(cāng)庫(kù)命令:
git push [alias] [branch]
刪除遠(yuǎn)程倉(cāng)庫(kù)你可以使用命令:
git remote rm [別名]
入要上傳的倉(cāng)庫(kù),添加遠(yuǎn)程地址:
git remote add origin [email protected]:yourName/yourRepo.git
在合并改動(dòng)之前,你可以使用如下命令預(yù)覽差異:
git diff <source_branch> <target_branch>
Git的下載安裝:
http://git-scm.com/downloads
Git的使用示例:
Git的命令桌面:

-查看Git的版本

-查看Git倉(cāng)庫(kù)的狀態(tài)
-查看歷史提交記錄

-配置本地全局姓名和郵箱

-設(shè)置Git默認(rèn)使用的文本編輯器, 一般可能會(huì)是 Vi 或者 Vim。
-設(shè)置在解決合并沖突時(shí)使用的差異分析工具。比如要改用 vimdiff
-查看配置的信息
-查看環(huán)境變量的設(shè)定

-Git倉(cāng)庫(kù)的初始化

-Git倉(cāng)庫(kù)創(chuàng)建目錄

-Git 添加文件

-Git提交,進(jìn)行確定,在Git的記錄中保存

-Git克隆,從現(xiàn)有Git倉(cāng)庫(kù)中拷貝項(xiàng)目

執(zhí)行該命令后,會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為grit的目錄,其中包含一個(gè) .git 的目錄,用于保存下載下來(lái)的所有版本記錄。


-Git克隆,從現(xiàn)有Git倉(cāng)庫(kù)中拷貝項(xiàng)目至新的目錄

執(zhí)行該命令后,會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為mygrit的目錄,其中包含一個(gè) .git 的目錄,用于保存下載下來(lái)的所有版本記錄。


參考資料:
Git的教程:
https://www.runoob.com/manual/github-git-cheat-sheet.pdf
https://www.runoob.com/git/git-tutorial.html
Github 簡(jiǎn)明教程 | 菜鳥教程(runoob.com)
https://www.runoob.com/w3cnote/git-guide.html
Git的官網(wǎng):
https://git-scm.com/
Git私有倉(cāng)庫(kù)服務(wù)器搭建
https://www.runoob.com/git/git-server.html
用git從遠(yuǎn)程倉(cāng)庫(kù)下載代碼到本地(非master分支)_每天進(jìn)步一點(diǎn)點(diǎn)-CSDN博客_git遠(yuǎn)程下載代碼
https://blog.csdn.net/KingJin_CSDN_/article/details/83110900
公眾號(hào)二維碼
End:如果有興趣了解金融量化交易和其他數(shù)據(jù)分析的實(shí)用技術(shù),歡迎關(guān)注本公眾號(hào)
