Git常用命令使用介紹
上一篇文章已經介紹瞭如何在不同系統上安裝Git,接下來詳細介紹Git中常用的命令
獲取倉庫
獲取倉庫的方式有兩種:第一種是新建了一個專案,並初始化為Git倉庫;第二種是獲取已有的Git倉庫,比如從GitHub上克隆一份某專案的映象倉庫
初始化新倉庫
初始化一個新倉庫的方法很簡單,在專案資料夾下開啟Git Bash,執行$ git init
命令,資料夾中會多出一個.git
資料夾,這是新倉庫就建立成功了
克隆已有倉庫
克隆倉庫也很簡單,比如要克隆Vuejs的倉庫,需要$ git clone
命令
$ git clone https://github.com/vuejs/vue.git
記錄更新
在新初始化的倉庫中,新增a.txt
b.txt
兩個檔案,隨便寫點東西
內容新增完成後,使用$ git add
命令跟蹤這兩個檔案的變化
# 需要跟蹤的檔案
$ git add a.txt b.txt
# 或者跟蹤所有檔案
$ git add .
指定完需要跟蹤的檔案後,使用$ git commit
命令暫存已修改的檔案。檔案暫存的目的是為了以後可以隨時回到這次的修改
$ git commit -m "初始化"
檔案暫存後,如果又修改了檔案內容,只需要再次執行$ git add
和$ git commit
命令,或者執行$ git commit -am
命令,它是前兩個命令的合成版
檢視修改資訊
$ git status
命令可以檢視狀態的變化資訊,$ git diff
忽略某些檔案
在新增追蹤檔案時,通常使用$ git add .
,這種方式會追蹤資料夾下的所有檔案,但有的時候需要忽略某些檔案,這個時候可以配置.gitignore
檔案
在專案目錄下新建一個.gitignore
檔案,可以自定義不需要跟蹤的檔案,檔案格式規範如下:
1、所有的空行,或者以註釋符號 # 開頭的行都會被 Git 忽略
2、可以使用標準的glob模式匹配
3、匹配模式最後跟反斜槓(/)說明要忽略的是目錄
4、要忽略指定模式以外的檔案或目錄,可以在模式前加上歎號(!)取反
glob模式是指shell所使用的簡化了的正則表示式,星號*
匹配零個或多個任意字元;[abc]
?
只匹配一個任意字元;如果在方括號中使用短劃線分隔兩個字元,表示所有在這兩個字元範圍內的都可以匹配(比如[0-9]表示匹配所有0到9的數字)
# 忽略所有 .md 結尾的檔案
*.md
# NOTE.md 不會忽略
!NOTE.md
# 僅僅忽略專案根目錄下的 dist 檔案,不包括 subdir/dist
/dist
# 忽略 build/ 目錄下的所有檔案
build/
# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc 資料夾下的所有txt檔案,包括子目錄
doc/**/*.txt
如果修改.gitignore
後發現無效,先執行git rm -r --cached .
清除快取
檢視更新記錄
$ git log
命令可以檢視commit記錄
修改提交
當一個功能開發完畢,我們會執行commit操作。commit完成後,突然發現了一些小問題需要立即修改,但是這些修改不值得單獨執行一次commit,這時就可以使用修改提交
$ git commit -am "完成支付功能"
# 修改一些問題,再次提交
$ git add .
$ git commit --amend
撤銷提交
如果你不小心把使用者名稱和密碼提交到了遠端,可以通過$ git reset --soft HEAD~1
命令撤銷最近一次提交,這種方式會保留你的修改,只是刪除了一次提交記錄。然後把私有資訊刪除後再提交到遠端就行了
$ git reset --soft HEAD~1
提交回滾
有時候可能需要回退到某個歷史提交,檢視之前提交的程式碼,這時候可以使用$ git reset --hard <hash:7>
命令
# 檢視提交記錄
$ git log --oneline
# 回退得到指定版本
$ git reset --hard fab66f8
回滾後如果需要在回滾回去,可以這麼做
# 檢視之前提交記錄,找到hash值
$ git reflog
# 回退得到指定版本
$ git reset --hard c747387
# 注意: 提交到遠端時,由於本地是落後的分支,直接push是不行的
# 可以使用 `git push -u origin develop -f`強制推送,但是如果說別人已經修改了程式碼,會被覆蓋掉
部落格: https://blog.86886.wangGitHub: https://github.com/wmui