檢查已有的配置信息:git config --listgit
檢查當前文件狀態:git statusgithub
跟蹤新文件bash
git add file 只要在 「Changes to be committed」 這行下面的,就說明是已暫存狀態。 git add 命令(這是個多功能命令,根據目標文件的狀態不一樣,此命令的效果也不一樣:能夠用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用於合併時把有衝突的文件標記爲已解決狀態等)
忽略某些文件app
通常咱們總會有些文件無需歸入 Git 的管理,也不但願它們總出如今未跟蹤文件列表。一般都是些自動生成的文件,好比日誌文件,或者編譯過程當中建立的臨時文件等。咱們能夠建立一個名爲 .gitignore 的文件,列出要忽略的文件模式。來看一個實際的例子: $ cat .gitignore *.[oa] *~ 第一行告訴 Git 忽略全部以 .o 或 .a 結尾的文件。通常這類對象文件和存檔文件都是編譯過程當中出現的,咱們用不着跟蹤它們的版本。第二行告訴 Git 忽略全部以波浪符(~)結尾的文件,許多文本編輯軟件(好比 Emacs)都用這樣的文件名保存副本。此外,你可能還須要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。要養成一開始就設置好 .gitignore 文件的習慣,以避免未來誤提交這類無用的文件。
提交更新ssh
git commit 另外也能夠用 -m 參數後跟提交說明的方式,在一行命令中提交更新: $ git commit -m "case...." git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。
跳過使用暫存區域日誌
$ git commit -a -m 'case....'
移除文件code
要在 Git 中對文件更名,能夠這麼作:$ git mv file_from file_to 其實,運行 git mv 就至關於運行了下面三條命令: $ mv README.txt README $ git rm README.txt $ git add README
查看提交歷史orm
git log 咱們經常使用 -p 選項展開顯示每次提交的內容差別,用 -2 則僅顯示最近的兩次更新: $ git log -p -2 還有許多摘要選項能夠用,好比 --stat,僅顯示簡要的增改行數統計: $ git log --stat
表 2-1 列出了經常使用的格式佔位符寫法及其表明的意義。對象
選項 說明 %H 提交對象(commit)的完整哈希字串 %h 提交對象的簡短哈希字串 %T 樹對象(tree)的完整哈希字串 %t 樹對象的簡短哈希字串 %P 父對象(parent)的完整哈希字串 %p 父對象的簡短哈希字串 %an 做者(author)的名字 %ae 做者的電子郵件地址 %ad 做者修訂日期(能夠用 -date= 選項定製格式) %ar 做者修訂日期,按多久之前的方式顯示 %cn 提交者(committer)的名字 %ce 提交者的電子郵件地址 %cd 提交日期 %cr 提交日期,按多久之前的方式顯示 %s 提交說明 用 oneline 或 format 時結合 --graph 選項,能夠看到開頭多出一些 ASCII 字符串表示的簡單圖形,形象地展現了每一個提交所在的分支及其分化衍合狀況。在咱們以前提到的 Grit 項目倉庫中能夠看到: $ git log --pretty=format:"%h %s" --graph
查看當前的遠程庫ci
$ git remote -v
查看文件
cat file
撤銷工做區修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,這裏有兩種狀況: 一種是readme.txt自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態; 一種是readme.txt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。 總之,就是讓這個文件回到最近一次git commit或git add時的狀態。 //git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另外一個分支」的命令。
撤銷暫存區修改
Git一樣告訴咱們,用命令git reset HEAD file能夠把暫存區的修改撤銷掉(unstage),從新放回工做區: $ git reset HEAD readme.txt
刪除:
$ rm file//刪除工做區的文件 1.$ git commit -m "remove file"//從版本庫中刪除該文件 2.$ git checkout -- file //若是工做區刪除錯了只須要從版本庫中還原
建立SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
在github中添加sshkey:
setting中選擇SSH keys ,而後New SSH key,title隨便取,key裏面粘貼id_rsa.pub中的內容.
關聯遠程倉庫:
$ git remote add origin git@github.com:karlwangshengyi/wsy.git
錯誤提示:
git init 產生的目錄解釋 error: src refspec master does not match any. 引發該錯誤的緣由是,目錄中沒有文件,空目錄是不能提交上去的 error: insufficient permission for adding an object to repository database ./objects 服務端沒有可寫目錄的權限 錯誤提示:fatal: remote origin already exists. 解決辦法:$ git remote rm origin 錯誤提示:error: failed to push som refs to ........ 解決辦法:$ git pull origin master //先pull 下來 再push 上去
推送代碼:
$ git push origin master
克隆代碼:
$ git clone git@github.com:karlwangshengyi/wsy.git //你也許還注意到,GitHub給出的地址不止一個,還能夠用https://github.com/michaelliao/gitskills.git這樣的地址。 //實際上,Git支持多種協議,默認的git://使用ssh,但也可使用https等其餘協議。 //使用https除了速度慢之外,還有個最大的麻煩是每次推送都必須輸入口令, //可是在某些只開放http端口的公司內部就沒法使用ssh協議而只能用https。
git bash複製粘貼:
右鍵,屬性,設置快速編輯模式。cd ..返回上一級。
建立分支dev:
git checkout命令加上-b參數表示建立並切換,至關於如下兩條命令: $ git branch dev $ git checkout dev //切換分支 Switched to branch 'dev'
查看分支:
git branch //git branch命令會列出全部分支,當前分支前面會標一個*號。
合併分支,咱們把dev分支的工做成果合併到master分支上:
$ git merge dev
刪除分支:
$ git branch -d dev
保存貯藏:
$ git stash //保存當前的工做環境,臨時修改bug時可能保存當前環境而後新建臨時分支解決問題,提交後刪除bug分支,再繼續修復當前問題 $ git stash list //查看工做現場 工做現場還在,Git把stash內容存在某個地方了,可是須要恢復一下,有兩個辦法: 一是用git stash apply恢復,可是恢復後,stash內容並不刪除,你須要用git stash drop來刪除; 另外一種方式是用git stash pop,恢復的同時把stash內容也刪了:
銷燬分支:
若是要丟棄一個沒有被合併過的分支,能夠經過git branch -D <name>強行刪除。
不必定要把本地分支往遠程推送,那麼,哪些分支須要推送,哪些不須要呢?
master分支是主分支,所以要時刻與遠程同步; dev分支是開發分支,團隊全部成員都須要在上面工做,因此也須要與遠程同步; bug分支只用於在本地修復bug,就不必推到遠程了,除非老闆要看看你每週到底修復了幾個bug; feature分支是否推到遠程,取決於你是否和你的小夥伴合做在上面開發。
在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致; 創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;
打標籤:
命令git tag <name>用於新建一個標籤,默認爲HEAD,也能夠指定一個commit id; git tag -a <tagname> -m "blablabla..."能夠指定標籤信息; git tag -s <tagname> -m "blablabla..."能夠用PGP簽名標籤; 命令git tag能夠查看全部標籤。 git show <tagname>查看標籤信息。 命令git push origin <tagname>能夠推送一個本地標籤; 命令git push origin --tags能夠推送所有未推送過的本地標籤; 命令git tag -d <tagname>能夠刪除一個本地標籤; 命令git push origin :refs/tags/<tagname>能夠刪除一個遠程標籤。