溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

git語(yǔ)法筆記

發(fā)布時(shí)間:2020-09-11 02:11:47 來源:網(wǎng)絡(luò) 閱讀:449 作者:Yum51 欄目:開發(fā)技術(shù)

一.初識(shí)

    git是分布式版本控制系統(tǒng),有別于SVN的集中式管理。兩者具體的分析比較可以參考github上的這篇gib與svn的差異比較。個(gè)人觀點(diǎn)看,git指令豐富,功能完善,還擁有g(shù)ithub這個(gè)大殺器,沒有理由不選git.

二.git的文件狀態(tài)與工作區(qū)域

I:三種狀態(tài):已提交(committed)、已修改(modified)和已暫存(staged)。你的文件可能就處于其中的一種狀態(tài)。已提交表示數(shù)據(jù)已經(jīng)安全的保存在本地?cái)?shù)據(jù)庫(kù)中。已修改表示修改了文件,但還沒保存到數(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 用來保存項(xiàng)目的元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方。這是 Git 中最重要的部分,從其它計(jì)算機(jī)克隆倉(cāng)庫(kù)時(shí),拷貝的就是這里的數(shù)據(jù)。

    工作目錄(Working Directory):工作目錄是對(duì)項(xiàng)目的某個(gè)版本獨(dú)立提取出來的內(nèi)容。這些從 Git 倉(cāng)庫(kù)的壓縮數(shù)據(jù)庫(kù)中提取出來的文件,放在磁盤上供你使用或修改。

    暫存區(qū)域(Staging Area):暫存區(qū)域 是一個(gè)文件,保存了下次將提交的文件列表信息,一般在 Git 倉(cāng)庫(kù)目錄中。 

三.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

說明:新添加的未跟蹤文件前面有 ?? 標(biāo)記,新添加到暫存區(qū)中的文件前面有 A 標(biāo)記,修改過的文件前面有 M標(biāo)記。 你可能注意到了 M 有兩個(gè)可以出現(xiàn)的位置,出現(xiàn)在右邊的 M 表示該文件被修改了但是還沒放入暫存區(qū),出現(xiàn)在靠左邊的 M 表示該文件被修改了并放入了暫存區(qū)。 例如,上面的狀態(tài)報(bào)告顯示:README 文件在工作區(qū)被修改了但是還沒有將修改后的文件放入暫存區(qū),lib/simplegit.rb 文件被修改了并將修改后的文件放入了暫存區(qū)。 而 Rakefile 在工作區(qū)被修改并提交到暫存區(qū)后又在工作區(qū)中被修改了,所以在暫存區(qū)和工作區(qū)都有該文件被修改了的記錄。

4.git rm -r  filename       刪除本地倉(cāng)庫(kù)文件     加 -n 參數(shù)  預(yù)刪除文件,并不會(huì)真的刪除磁盤上文件

5.git rm  -f filename       強(qiáng)制刪除   適用于文件在刪除前做過修改并已提交到暫存區(qū)域的情況。但這樣的話,刪除的數(shù)據(jù)不能通過git再恢復(fù)

6.git rm --cached   filename     只刪除緩存區(qū)里的文件

拓展:git rm 命令后面可以列出文件或者目錄的名字,也可以使用 glob 模式。 比方說:

$ git rm log/\*.log

注意到星號(hào) * 之前的反斜杠 \, 因?yàn)?Git 有它自己的文件模式擴(kuò)展匹配方式,所以我們不用 shell 來幫忙展開。 此命令刪除 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                 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動(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 <commit ID> //將本地代碼回退到指定的某次commit,目錄和緩存區(qū)的修改都被丟棄

$ git reset --soft <commit ID> //將HEAD指向<commit ID>所在位置,本地的修改(即<commit ID>位置之前的修改)回退到緩存區(qū)

$ git reset --mixed <commit ID> //將HEAD指向<commit ID>所在位置,本地的修改(即<commit ID>位置之前的修改)回退到工作目錄

 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,但是還沒到你的遠(yuǎn)端倉(cāng)庫(kù)。(需事先執(zhí)行 git add操作)

6.git commit -a             可跳過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   開啟拓?fù)鋱D選項(xiàng)

IV:git的標(biāo)簽操作

1.git tag <name>             用于新建一個(gè)標(biāo)簽,默認(rèn)為HEAD,也可以指定一個(gè)commit id;

2.git tag -a <tagname> -m "blablabla..."          可以指定標(biāo)簽信息,或直接

        git tag 標(biāo)簽名         但這樣就缺少了相關(guān)詳細(xì)的說明

3.git tag -s <tagname> -m "blablabla..."           可以用PGP簽名標(biāo)簽;

4.git tag                               可以查看所有標(biāo)簽。

5.git show tag <tagname>                     查看標(biāo)簽信息

6.git push --tags                          將本地所有tag一次推送到遠(yuǎn)程    注意默認(rèn)情況下,git push 并不會(huì)把本地標(biāo)簽傳到遠(yuǎn)程倉(cāng)庫(kù)上,需要通過命名制定上傳

7.git push  遠(yuǎn)程倉(cāng)庫(kù)  tagname                將本地單個(gè)標(biāo)簽往遠(yuǎn)程倉(cāng)庫(kù)推

8.git fetch origin tag <tagname>                獲取遠(yuǎn)程倉(cāng)庫(kù)的tag

9.git tag -d <tagname>                       刪除本地tag         

10.git push origin --delete tag <tagname>          刪除遠(yuǎn)程倉(cāng)庫(kù)的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)信息

git語(yǔ)法筆記

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

git
AI