一.初識(shí)
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站制作等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都柴油發(fā)電機(jī)等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致贊許!git是分布式版本控制系統(tǒng),有別于SVN的集中式管理。兩者具體的分析比較可以參考github上的這篇gib與svn的差異比較。個(gè)人觀點(diǎn)看,git指令豐富,功能完善,還擁有g(shù)ithub這個(gè)大殺器,沒(méi)有理由不選git.
二.git的文件狀態(tài)與工作區(qū)域
I:三種狀態(tài):已提交(committed)、已修改(modified)和已暫存(staged)。你的文件可能就處于其中的一種狀態(tài)。已提交表示數(shù)據(jù)已經(jīng)安全的保存在本地?cái)?shù)據(jù)庫(kù)中。已修改表示修改了文件,但還沒(méi)保存到數(shù)據(jù)庫(kù)中。已暫存表示對(duì)一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中。
II:Git 項(xiàng)目中的三個(gè)工作區(qū)域的概念:
Git 倉(cāng)庫(kù)(Repository):Git倉(cāng)庫(kù)是 Git 用來(lái)保存項(xiàng)目的元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方。這是 Git 中最重要的部分,從其它計(jì)算機(jī)克隆倉(cāng)庫(kù)時(shí),拷貝的就是這里的數(shù)據(jù)。
工作目錄(Working Directory):工作目錄是對(duì)項(xiàng)目的某個(gè)版本獨(dú)立提取出來(lái)的內(nèi)容。這些從 Git 倉(cāng)庫(kù)的壓縮數(shù)據(jù)庫(kù)中提取出來(lái)的文件,放在磁盤(pán)上供你使用或修改。
暫存區(qū)域(Staging Area):暫存區(qū)域 是一個(gè)文件,保存了下次將提交的文件列表信息,一般在 Git 倉(cāng)庫(kù)目錄中?!?/p>
三.git指令整理
I:主體命令
1.git init 初始化操作。進(jìn)入到本地想建倉(cāng)庫(kù)的目錄, 執(zhí)行此命令 ,之后便可看到 .git 這個(gè)文件夾(隱藏)
2.git add file 將文件添加到緩存
3.git status 查看狀態(tài)詳細(xì)信息 若加 -s 參數(shù) 則是簡(jiǎn)略顯示
舉例如:
$
git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
說(shuō)明:新添加的未跟蹤文件前面有 ??
標(biāo)記,新添加到暫存區(qū)中的文件前面有 A
標(biāo)記,修改過(guò)的文件前面有 M
標(biāo)記。 你可能注意到了 M
有兩個(gè)可以出現(xiàn)的位置,出現(xiàn)在右邊的 M
表示該文件被修改了但是還沒(méi)放入暫存區(qū),出現(xiàn)在靠左邊的 M
表示該文件被修改了并放入了暫存區(qū)。 例如,上面的狀態(tài)報(bào)告顯示:README
文件在工作區(qū)被修改了但是還沒(méi)有將修改后的文件放入暫存區(qū),lib/simplegit.rb
文件被修改了并將修改后的文件放入了暫存區(qū)。 而 Rakefile
在工作區(qū)被修改并提交到暫存區(qū)后又在工作區(qū)中被修改了,所以在暫存區(qū)和工作區(qū)都有該文件被修改了的記錄。
4.git rm -r filename 刪除本地倉(cāng)庫(kù)文件 加 -n 參數(shù) 預(yù)刪除文件,并不會(huì)真的刪除磁盤(pán)上文件
5.git rm -f filename 強(qiáng)制刪除 適用于文件在刪除前做過(guò)修改并已提交到暫存區(qū)域的情況。但這樣的話,刪除的數(shù)據(jù)不能通過(guò)git再恢復(fù)
6.git rm --cached filename 只刪除緩存區(qū)里的文件
拓展:git rm 命令后面可以列出文件或者目錄的名字,也可以使用 glob 模式。 比方說(shuō):
$ git rm log/\*.log
注意到星號(hào) * 之前的反斜杠 \, 因?yàn)?Git 有它自己的文件模式擴(kuò)展匹配方式,所以我們不用 shell 來(lái)幫忙展開(kāi)。 此命令刪除 log/ 目錄下擴(kuò)展名為 .log 的所有文件。 類似的比如:
$ git rm \*~
該命令為刪除以 ~ 結(jié)尾的所有文件。
7.git mv 舊文件名 新文件名 實(shí)現(xiàn)對(duì)文件重命名
8.git fetch [alias] 更新本地?cái)?shù)據(jù)文件,然后再執(zhí)行 git merge [alias]/[branch] 將服務(wù)器上的任何更新合到本地的倉(cāng)庫(kù)中
9.git diff 命令顯示已寫(xiě)入緩存與已修改但尚未寫(xiě)入緩存的改動(dòng)的區(qū)別
具體參數(shù)應(yīng)用:
尚未緩存的改動(dòng):git diff
查看已緩存的改動(dòng): git diff --cached
查看已緩存的與未緩存的所有改動(dòng):git diff HEAD
顯示摘要而非整個(gè) diff:git diff --stat
10.git reset HEAD 命令用于取消已緩存的內(nèi)容。
具體參數(shù)應(yīng)用信息:
$ git reset --hard
$ git reset --soft
$ git reset --mixed
hard/soft/mixed 是reset命令常用的三模式,默認(rèn)是mixed。除此之外還有merge和keep兩種模式,但是不大常用。
II:推送拉取相關(guān)
1.git remote 查看遠(yuǎn)端的倉(cāng)庫(kù)
2.git pull 遠(yuǎn)端倉(cāng)庫(kù)名 拉取遠(yuǎn)程數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù) 『合并了 git fetch 遠(yuǎn)程倉(cāng)庫(kù) + git merge 遠(yuǎn)程倉(cāng)庫(kù)名 本地分支』
3.git remote add 遠(yuǎn)程倉(cāng)庫(kù)名 https://github.com/xxxx/遠(yuǎn)程倉(cāng)庫(kù)名.git 建立遠(yuǎn)程倉(cāng)庫(kù)
4.git push 遠(yuǎn)程倉(cāng)庫(kù)名 本地分支名 推送本地分支倉(cāng)庫(kù)數(shù)據(jù)到遠(yuǎn)程倉(cāng)庫(kù)同名分支下(git 會(huì)在遠(yuǎn)端倉(cāng)庫(kù)新建一個(gè)同名分支)
5.git commit -m "代碼提交信息" 完成這步,對(duì)文件所做的改動(dòng)便會(huì)提交到了 HEAD,但是還沒(méi)到你的遠(yuǎn)端倉(cāng)庫(kù)。(需事先執(zhí)行 git add操作)
6.git commit -a 可跳過(guò)git add 操作 , 直接將文件信息提交
7.git clone url 拷貝一個(gè)項(xiàng)目到本地
III.git日志操作
1.git log 查看消息日志
帶有的選項(xiàng)含義:
--oneline 則消息以簡(jiǎn)短的形式體現(xiàn)
--reverse 逆向顯示消息信息
--author 制定作者信息 如: git log --authou=kkk -5 顯示 操作為kkk的前5行記錄
--before 制定多少時(shí)間以前 如: git log --oneline --before={1.weeks.ago}
--after 相對(duì)應(yīng)before 時(shí)間可為: weeks days hours minutes 或者直接敲數(shù)字 如: git log --oneline --after={2016-08-02}
--graph 開(kāi)啟拓?fù)鋱D選項(xiàng)
IV:git的標(biāo)簽操作
1.git tag
2.git tag -a
git tag 標(biāo)簽名 但這樣就缺少了相關(guān)詳細(xì)的說(shuō)明
3.git tag -s
4.git tag 可以查看所有標(biāo)簽。
5.git show tag
6.git push --tags 將本地所有tag一次推送到遠(yuǎn)程 注意默認(rèn)情況下,git push 并不會(huì)把本地標(biāo)簽傳到遠(yuǎn)程倉(cāng)庫(kù)上,需要通過(guò)命名制定上傳
7.git push 遠(yuǎn)程倉(cāng)庫(kù) tagname 將本地單個(gè)標(biāo)簽往遠(yuǎn)程倉(cāng)庫(kù)推
8.git fetch origin tag
9.git tag -d
10.git push origin --delete tag
11.git tag -a tagname 標(biāo)簽校驗(yàn)和 可實(shí)現(xiàn)對(duì)標(biāo)簽進(jìn)行后期補(bǔ)打標(biāo)簽 校驗(yàn)和信息的獲取方式命令: git log --pretty=oneline --abbrev-commit
×××標(biāo)記即為歷史提交對(duì)應(yīng)的校驗(yàn)信息
V:git分支操作
1.git branch 查看分支
2.git branch -r 查看遠(yuǎn)程分支
3.git branch 分支名 本地創(chuàng)建分支
4.git checkout -b 分支名 本地創(chuàng)建分支,并自動(dòng)切換到給分支
5.git checkout 分支名 切換到相應(yīng)的分支
6.git branch -d 分支名 刪除本地分支
7.git push 遠(yuǎn)程倉(cāng)庫(kù)名 --delete <遠(yuǎn)程倉(cāng)庫(kù)分支名> 刪除遠(yuǎn)程倉(cāng)庫(kù)的分支
8.git branch -m devel develop 重命名本地分支 如: 將devel修改為 develop
9.git merge 要合的分支名 合并分支
附參考信息:
1.https://git-scm.com/book/zh/v2
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。