git文法筆記

來源:互聯網
上載者:User

標籤:git

一.初識

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

二.git的檔案狀態與工作區域

I:三種狀態:已提交(committed)、已修改(modified)和已暫存(staged)。你的檔案可能就處於其中的一種狀態。已提交表示資料已經安全的儲存在本機資料庫中。已修改表示修改了檔案,但還沒儲存到資料庫中。已暫存表示對一個已修改檔案的目前的版本做了標記,使之包含在下次提交的快照中。   

II:Git 項目中的三個工作區域的概念:

    Git 倉庫(Repository):Git倉庫是 Git 用來儲存項目的中繼資料和對象資料庫的地方。這是 Git 中最重要的部分,從其它電腦複製倉庫時,拷貝的就是這裡的資料。

    工作目錄(Working Directory):工作目錄是對項目的某個版本獨立提取出來的內容。這些從 Git 倉庫的壓縮資料庫中提取出來的檔案,放在磁碟上供你使用或修改。

    暫存地區(Staging Area):暫存地區 是一個檔案,儲存了下次將提交的檔案清單資訊,一般在 Git 倉庫目錄中。 

三.git指令整理

I:主體命令

1.git init               初始化操作。進入到本地想建倉庫的目錄, 執行此命令 ,之後便可看到 .git 這個檔案夾(隱藏)

2.git add file            將檔案添加到緩衝

3.git status             查看狀態詳細資料    若加 -s 參數  則是簡略顯示

舉例如:

   $ git status -s

     M README

    MM Rakefile

    A  lib/git.rb

    M  lib/simplegit.rb

    ?? LICENSE.txt

說明:新添加的未追蹤檔案前面有 ?? 標記,新添加到暫存區中的檔案前面有 A 標記,修改過的檔案前面有 M標記。 你可能注意到了 M 有兩個可以出現的位置,出現在右邊的 M 表示該檔案被修改了但是還沒放入暫存區,出現在靠左邊的 M 表示該檔案被修改了並放入了暫存區。 例如,上面的狀態報表顯示:README 檔案在工作區被修改了但是還沒有將修改後的檔案放入暫存區,lib/simplegit.rb 檔案被修改了並將修改後的檔案放入了暫存區。 而 Rakefile 在工作區被修改並提交到暫存區後又在工作區中被修改了,所以在暫存區和工作區都有該檔案被修改了的記錄。

4.git rm -r  filename       刪除本地倉庫檔案     加 -n 參數  預刪除檔案,並不會真的刪除磁碟上檔案

5.git rm  -f filename       強制移除   適用於檔案在刪除前做過修改並已提交到暫存地區的情況。但這樣的話,刪除的資料不能通過git再恢複

6.git rm --cached   filename     只刪除緩衝區裡的檔案

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

$ git rm log/\*.log

注意到星號 * 之前的反斜線 \, 因為 Git 有它自己的檔案模式擴充匹配方式,所以我們不用 shell 來幫忙展開。 此命令刪除 log/ 目錄下副檔名為 .log 的所有檔案。 類似的比如:

$ git rm \*~

該命令為刪除以 ~ 結尾的所有檔案。

7.git mv 舊檔案名稱 新檔案名稱      實現對檔案重新命名

8.git fetch [alias]           更新本機資料檔案,然後再執行 git merge [alias]/[branch] 將伺服器上的任何更新合到本地的倉庫中

9.git diff                 命令顯示已寫入緩衝與已修改但尚未寫入緩衝的改動的區別

具體參數應用:

尚未緩衝的改動:git diff

查看已緩衝的改動: git diff --cached

查看已緩衝的與未緩衝的所有改動:git diff HEAD

顯示摘要而非整個 diff:git diff --stat

10.git reset HEAD            命令用於取消已緩衝的內容。

具體參數應用資訊:

$ git reset --hard <commit ID> //將本地代碼回退到指定的某次commit,目錄和緩衝區的修改都被丟棄

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

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

以上 hard/soft/mixed 是reset命令常用的三模式,預設是mixed。除此之外還有merge和keep兩種模式,但是不常用


II:推送拉取相關

1.git remote             查看遠端的倉庫

2.git pull 遠端倉庫名         拉取遠端資料倉庫的資料  『合并了 git fetch 遠程倉庫  + git merge  遠程倉庫名  本地分支』

3.git remote add 遠程倉庫名 https://github.com/xxxx/遠程倉庫名.git         建立遠程倉庫

4.git push  遠程倉庫名  本地分支名      推送本地分支倉庫資料到遠程倉庫同名分支下(git 會在遠端倉庫建立一個同名分支)

5.git commit -m "代碼提交資訊"                完成這步,對檔案所做的改動便會提交到了 HEAD,但是還沒到你的遠端倉庫。(需事先執行 git add操作)

6.git commit -a             可跳過git add   操作 , 直接將檔案資訊提交

7.git  clone   url           拷貝一個項目到本地


III.git日誌操作

1.git log                查看訊息日誌    

帶有的選項含義:

--oneline  則訊息以簡短的形式體現

--reverse    逆向顯示訊息資訊

--author     制定作者資訊      如:  git log  --authou=kkk    -5      顯示 操作為kkk的前5行記錄

--before     制定多少時間以前   如:  git log --oneline   --before={1.weeks.ago}   

--after      相對應before      時間可為:   weeks  days  hours  minutes   或者直接敲數字  如: git log --oneline  --after={2016-08-02}

--graph   開啟拓撲圖選項



IV:git的標籤操作

1.git tag <name>             用於建立一個標籤,預設為HEAD,也可以指定一個commit id;

2.git tag -a <tagname> -m "blablabla..."          可以指定標籤資訊,或直接

        git tag 標籤名         但這樣就缺少了相關詳細的說明

3.git tag -s <tagname> -m "blablabla..."           可以用PGP簽名標籤;

4.git tag                               可以查看所有標籤。

5.git show tag <tagname>                     查看標籤資訊

6.git push --tags                          將本地所有tag一次推送到遠程    注意預設情況下,git push 並不會把本地標籤傳到遠程倉庫上,需要通過命名制定上傳

7.git push  遠程倉庫  tagname                將本地單個標籤往遠程倉庫推

8.git fetch origin tag <tagname>                擷取遠程倉庫的tag

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

10.git push origin --delete tag <tagname>          刪除遠程倉庫的tag

11.git  tag -a tagname  標籤校正和             可實現對標籤進行後期補打標籤   校正和資訊的擷取方式命令: git log --pretty=oneline --abbrev-commit

黃色標記即為曆史提交對應的校正資訊

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/85/66/wKiom1eiJjaygrMCAAASpIdZCvQ111.png" title="Image.png" alt="wKiom1eiJjaygrMCAAASpIdZCvQ111.png" />

V:git分支操作

1.git branch                              查看分支

2.git branch -r                      查看遠程分支

3.git branch  分支名                    本地建立分支

4.git checkout -b 分支名                本地建立分支,並自動切換到給分支

5.git checkout 分支名                       切換到相應的分支

6.git branch  -d 分支名                     刪除本地分支

7.git push 遠程倉庫名  --delete <遠程倉庫分支名>          刪除遠程倉庫的分支

8.git branch -m devel develop     重新命名本地分支   如: 將devel修改為 develop

9.git merge  要合的分支名                  合并分支














git文法筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.