Git 學習筆記 (2、基礎)

獲取 Git 網絡倉庫
java

好比獲取我在 gitoschina 上的 HelloWord,固然要在 gitoschina 上建立一個 HelloWord 的項目。git

在目錄中初始化正則表達式

 $ git init

從 gitoschina 上獲取,格式: git clone [url]shell

$ git clone http://git.oschina.net/dandyIder/HelloWord.git

克隆到指定文件vim

$ git clone   abc

查看已暫存和未暫存的更新緩存

$ git status

跟蹤一個文件,格式 git add <filename>服務器

$ git add HelloWord.java

編輯一個文件,能夠用 vim or gedit網絡

$ vim HelloWord.java
or
$ gedit HelloWord.java

修改 HelloWord.java 以後能夠看看文件狀態學習

$ git status

看看 HelloWord.java 和以前的有什麼不一樣fetch

$ git diff HelloWord.java

看看項目中被修改過的因此文件和原來的有什麼不一樣。

$ git diff

看緩存中的

$ git diff --cached

提交更新

$ git commit

會用 vim 打開提交說明文檔,在裏面編輯提交說明。

不用 vim 打開提交說明文件進行編輯

$ git commit -m "這裏填寫更新說明"
eg
$ git commit -m "this first commit"

跳過緩衝區提交修改

$ git commit -a -m "add new file"

移除某個文件,結果是文件被刪除了。提交的時候就不歸入版本管理。

$ git rm HelloWord.java
$ git status

若是刪除以前修改過而且已經放到暫存區域的話,則必需要用強制刪除選項 -f(譯註:即 force 的首字母),以防誤刪除文件後丟失修改的內容。

$ git rm -f HelloWord.java

把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然但願保留在當前工做目錄中。

$ git rm --cached HelloWord.java

$ git rm \*~

會遞歸刪除當前目錄及其子目錄中全部 ~ 結尾的文件。

移動文件  

$ git mv file_from file_to
//eg
$ git mv HelloWord.java   /abc/HelloWord.java

HelloWord.java 就在/abc 目錄下了。

文件重命名

$ git mv HelloWord.java abc.java
//實質上是運行了
$ git rm HelloWord.java
$ git add abc.java

忽略某些文件,好比不提交 abc.java~  abc.java.back

建立一個 .gitignore 文件

vim .gitignore
gedit .gitgnore

寫上 

*~
*.back

保存,而後 cat 下

cat .gitignore

文件 .gitignore 的格式規範以下:

全部空行或者以註釋符號 # 開頭的行都會被 Git 忽略。

可使用標準的 glob 模式匹配。

匹配模式最後跟反斜槓(/)說明要忽略的是目錄。

要忽略指定模式之外的文件或目錄,能夠在模式前加上驚歎號(!)取反。

所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式。星號(*)匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);問號(?)只匹配一個任意字符;若是在方括號中使用短劃線分隔兩個字符,表示全部在這兩個字符範圍內的均可以匹配(好比 [0-9] 表示匹配全部 0 到 9 的數字)。

咱們再看一個 .gitignore 文件的例子:

# 此爲註釋 – 將被 Git 忽略

    # 忽略全部 .a 結尾的文件

    *.a

    # 但 lib.a 除外

    !lib.a

    # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO

    /TODO

    # 忽略 build/ 目錄下的全部文件

    build/

    # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    doc/*.txt

查看歷史提交

$ git log

咱們經常使用 -p 選項展開顯示每次提交的內容差別,用 -2 則僅顯示最近的兩次更新:

$ git log -p -2

在作代碼審查,或者要快速瀏覽其餘協做者提交的更新都做了哪些改動時,就能夠用這個選項。此外,還有許多摘要選項能夠用,好比 --stat,僅顯示簡要的增改行數統計:

$ git log --stat

跟多 git log 使用方式請看學習資料

撤銷操做

    修改最後一次提交。

    有時候咱們提交完了才發現漏掉了幾個文件沒有加,或者提交信息寫錯了。想要撤消剛纔的提交操做,可使用 --amend 選項從新提交:

$ git commit --amend

    此命令將使用當前的暫存區域快照提交。若是剛纔提交完沒有做任何改動,直接運行此命令的話,至關於有機會從新編輯提交說明,但將要提交的文件快照和以前的同樣。

取消已經暫存的文件

$ git status
$ git reset HEAD <file>...

取消對文件的修改

$ git status
$ git checkout -- <file>...

查看當前的遠程庫

$ git remote 
$ git remote -v

添加遠程倉庫,git remote add [shortname] [url]

$ git remote add pd  
$ git remote -v

如今能夠用字符串 pb 指代對應的倉庫地址了。好比說,要抓取全部 Paul 有的,但本地倉庫沒有的信息,能夠運行 git fetch pb:

$ git fetch pd

推送數據到遠程倉庫

項目進行到一個階段,要同別人分享目前的成果,能夠將本地倉庫中的數據推送到遠程倉庫。實現這個任務的命令很簡單: git push [remote-name] [branch-name]。若是要把本地的 master 分支推送到 origin 服務器上(再次說明下,克隆操做會自動使用默認的 master 和 origin 名字),能夠運行下面的命令:

$ git push origin master

只有在所克隆的服務器上有寫權限,或者同一時刻沒有其餘人在推數據,這條命令纔會如期完成任務。若是在你推數據前,已經有其餘人推送了若干更新,那你的推送操做就會被駁回。你必須先把他們的更新抓取到本地,合併到本身的項目中,而後才能夠再次推送。

查看遠程倉庫信息

咱們能夠經過命令 git remote show [remote-name] 查看某個遠程倉庫的詳細信息,好比要看所克隆的 origin 倉庫,能夠運行:

$ git remote show origin

遠程倉庫的刪除和重命名

在新版 Git 中能夠用 git remote rename 命令修改某個遠程倉庫在本地的簡稱,好比想把 pb 改爲 paul,能夠這麼運行:

$ git remote rename pd purl
$ git remote -v

刪除

$ git remote rm purl
$ git remote -v

標籤,列出因此標籤

$ git tag

新建標籤

Git 使用的標籤有兩種類型:輕量級的(lightweight)和含附註的(annotated)。輕量級標籤就像是個不會變化的分支,實際上它就是個指向特定提交對象的引用。而含附註標籤,其實是存儲在倉庫中的一個獨立對象,它有自身的校驗和信息,包含着標籤的名字,電子郵件地址和日期,以及標籤說明,標籤自己也容許使用 GNU Privacy Guard (GPG) 來簽署或驗證。通常咱們都建議使用含附註型的標籤,以便保留相關信息;固然,若是隻是臨時性加註標籤,或者不須要旁註額外信息,用輕量級標籤也沒問題。

含註釋的標籤

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
$ git show v1.4

更多詳細介紹,請看學習資料

相關文章
相關標籤/搜索