獲取 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
更多詳細介紹,請看學習資料