內(nèi)容來源:超算習堂 (easyhpc.net)
01 基礎(chǔ)知識
git是一個分布式版本控制軟件,最初由林納斯·托瓦茲(Linus Torvalds,Linux內(nèi)核的發(fā)明人及該計劃的合作者)創(chuàng)作,于2005年以GPL發(fā)布。最初目的是為更好地管理Linux內(nèi)核開發(fā)而設(shè)計。
git最初的開發(fā)動力來自于BitKeeper和Monotone。git最初只是作為一個可以被其他前端包裝的后端而開發(fā)的,但后來git內(nèi)核已經(jīng)成熟到可以獨立地用作版本控制。很多著名的軟件都使用git進行版本控制,其中包括Linux內(nèi)核、X.Org服務(wù)器和OLPC內(nèi)核等項目的開發(fā)流程。
而Github就是一個用git做版本控制的項目托管平臺。
主要功能
git是用于Linux內(nèi)核開發(fā)的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的作法,不需要服務(wù)器端軟件,就可以運作版本控制,使得源代碼的發(fā)布和交流極其方便。git的速度很快,這對于諸如Linux內(nèi)核這樣的大項目來說自然很重要。git最為出色的是它的合并追蹤(merge tracing)能力。
實現(xiàn)原理
git更像一個文件系統(tǒng),直接在本機上獲取數(shù)據(jù),不必連接到主機端獲取數(shù)據(jù)。每個開發(fā)者都可有全部開發(fā)歷史的本地副本,changes從這種本地repository復(fù)制給其他開發(fā)者。這些changes作為新增的開發(fā)分支被導(dǎo)入,可以與本地開發(fā)分支合并。
分支是非常輕量級的,一個分支僅是對一個commit的引用。
git是用C語言開發(fā)的,以追求最高的性能。git自動完成垃圾回收,也可以用命令git gc --prune
直接調(diào)用。
git存儲每個新創(chuàng)建的object作為一個單獨文件。為了壓縮存儲空間占用, packs操作把很多文件使用差分壓縮入一個文件中(packfile),并創(chuàng)建一個對應(yīng)的索引文件,指明object在packfile中的偏移值。新創(chuàng)建的對象仍然作為單獨文件存在。repacks操作非常費時間,git會在空閑時間自動做此操作。也可用命令git gc
來直接啟動repack。packfile與索引文件都用SHA-1作為校驗和并作為文件名。git fsck
命令做校驗和的完整性驗證。
git中的數(shù)據(jù)流與存儲級別
git安裝和配置
在Ubuntu系統(tǒng)中可以直接使用sudo apt install git
直接安裝,本次虛擬環(huán)境已安裝git
首先配置用戶信息:用戶名和郵箱地址
git config --global user.name "ehpc"
git config --global user.email ehpc@ehpc.com
其中--global
選項表示所有項目默認使用的用戶信息,去掉后則會在特定項目中使用特定用戶信息
可以使用git config --list
查看已有配置信息
02 新建倉庫
git有工作區(qū)、暫存區(qū)和版本庫:
- 工作區(qū)(Working directory):自己的工作目錄
- 暫存區(qū)(stage / index):暫時存放工作區(qū)中修改的內(nèi)容
-
版本庫(repository):工作區(qū)的隱藏目錄.git,可以用
ls -a
查看
新建倉庫
git可以使用git init
命令來初始化創(chuàng)建一個git倉庫。此時,會生成一個.git目錄
當然,也可以指定目錄,使用命令:git init <directory>
克隆倉庫
我們可以使用命令git clone <repo>
從git倉庫中克隆項目。
也可以指定目錄,使用命令 git clone <repo> <directory>
03 工作流程
一般git的工作流程如下:
- 克隆或創(chuàng)建git資源作為工作目錄
- 在工作目錄里修改文件或添加文件
- 更新自己的工作目錄
- 查看修改的內(nèi)容
- 提交修改
- 有問題時撤回修改內(nèi)容
創(chuàng)建倉庫
使用如下命令創(chuàng)建一個測試用倉庫
git init ehpc
cd ehpc
git add
使用git add
將添加的文件或修改的文件加入本地的緩存區(qū)。
我們首先創(chuàng)建兩個文件,然后將其添加到緩存區(qū):
touch README ehpc.txt
echo "test" >> README
git add README ehpc.txt
git status
git status
操作可以查看git當前狀態(tài),我們輸入后可得到:
如果我們修改文件,如下命令:
echo "test2" >> README
git status
將會看到:
我們還可以再創(chuàng)建一個新的文件:
touch ehpc2.txt
將會看到:
也可以使用-s
參數(shù)查看簡易信息:
git status -s
"AM"表示添加到緩存后又有改動。
git diff
git diff
可以查看git status
的結(jié)果的詳細信息,可以添加參數(shù)--cached
表示已緩存的改動,--stat
顯示摘要:
git diff
git diff --stat
git add README
git diff --cached
git commit
git commit
會將緩存區(qū)內(nèi)容添加到倉庫中:
git commit -m 'first commit'
git satus
其中-m
參數(shù)表示后面為提交注釋
也可通過添加-a
參數(shù)跳過add
過程:
git rm
要從git倉庫中刪除文件,則必須使用git rm
命令:
git rm ehpc.txt
ls
可以通過添加-f
參數(shù)執(zhí)行強制刪除,--cached
參數(shù)不刪除工作區(qū)文件:
git rm --cached README
遞歸刪除當前目錄時,使用:
git rm -r *
git mv
作用與git rm
類似:
04 分支管理
每個git倉庫都可以擁有很多個分支,這樣可以在分支之后,不影響主線的同時繼續(xù)自己的工作,同時,在開發(fā)完成后,還可以合并分支。
創(chuàng)建分支
通過git branch <name>
創(chuàng)建分支,git branch
查看分支列表,執(zhí)行:
git branch ehpcbranch
git branch
Git 新建分支出現(xiàn)報錯:“fatal: Not a valid object name: ‘master‘.“_is not a valid branch name_Lakers2015的博客-CSDN博客
切換分支
通過git checkout <name>
切換分支,我們切換分支并修改文件:
git checkout ehpcbranch
echo "branch" >> README.md
git status
git add README.md
git commit -m "branch commit"
最后再切回master分支:
git checkout master
合并分支
使用git merge -m "" <name>
合并分支:
合并沖突
當分支與master都有更改時合并,則會出現(xiàn)沖突,我們現(xiàn)在制造沖突并嘗試合并:
git checkout ehpcbranch
echo "branch2" >> README.md
git commit -am "conflict"
git checkout master
echo "branch3" >> README.md
git commit -am "conflict2"
git merge ehpcbranch
將會看到如下結(jié)果:
此時需要手動修正沖突:
git diff
vim README.md
cat README.md
git diff
git add README.md
git commit -m "merge cobflict"
刪除分支
刪除分支操作很簡單,只需使用git branch -d <name>
即可:
git branch
git branch -d ehpcbranch
git branch
05 日志操作
使用git后,會進行很多操作,當我們想回顧操作歷史時,就可以查看git的日志來了解歷史操作。
查看日志
git中可以使用git log
命令查看所有的commit
:
git log
按q
退出,也可以添加--oneline
參數(shù)簡單查看:
git log --oneline
添加--graph
參數(shù)查看分支信息:
git log --oneline --graph
還有--author
參數(shù)查看指定用戶的記錄,使用--since
和--before
,--until
和--after
指定日期查看,--reverse
逆向查看。
日志統(tǒng)計
添加--stat
參數(shù)以詳細顯示每次commit
中修改的文件的內(nèi)容:
git log --stat
日志排序
除了--reverse
可以重新排序,--topo-order
同樣可以:
git log --topo-order --graph
格式化日志
可以指定--pretty
參數(shù)改變顯示格式:
git log --pretty=short
文章來源:http://www.zghlxwxcb.cn/news/detail-789315.html
git log --pretty=oneline --graph
文章來源地址http://www.zghlxwxcb.cn/news/detail-789315.html
到了這里,關(guān)于EasyHPC - Git入門教程【筆記】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!