在學習了廖雪峯老師的git教程後把經常使用的命令總結了出來
- 注:在使用這些命令前請安裝好Git軟件,地址:https://git-scm.com/downloads,同時去註冊一個git類的數據倉庫帳號,國外的如github、gitlab,國內的如碼雲等。
git init
git add .
git add 文件名
eg: git add readme.md
git commit -m "說明"
eg: git commit -m "Update"
git status
git diff 文件名
eg: git diff readme.md
git
- 注:在確認修改無誤後須要再次對修改的文件作git add 和 git commit命令來提交到倉庫。
git log
在Git中,用HEAD表示當前版本,也就是最新的提交,上一個版本就是HEAD^,上上一個版本就是HEAD^^,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100。github
git reset --hard HEAD^
找到回退以前的版本的commit版本值(sha1值),來進行反悔操做。bash
git reset --hard commit值
eg: git reset --hard f8dad 注: 這個值只須要取前五位便可。
前面的反悔操做是創建在你還沒關閉git bash窗口看獲得回退前那個最新版本的commit id值,若是咱們關閉了窗口後想反悔怎麼辦,使用如下命令來查看app
git relog
git diff HEAD -- 文件名
eg: git diff HEAD -- readme.txt
注:每次修改,若是不用git add到暫存區,那就不會加入到commit中。
git checkout -- 文件名
eg: git checkout -- readme.txt //把readme.txt文件在工做區的修改所有撤銷
git rm 文件名
eg: git rm test.txt
以後再使用git commit -m "description",文件就從版本庫裏面刪除了
git checkout HEAD -- test.txt //這個恢復的前提是沒有執行commit命令才行。
git remote add origin 你遠端的github地址
eg: git remote add origin git@github.com:michaelliao/learngit.git
git push -u origin master //推送到主分支,之後能夠直接:git push origin master
git clone 遠程地址
eg: git clone git@github.com:michaelliao/gitskills.git
好比咱們要建立dev分支:gitlab
git checkout -b dev
注:git checkout命令加上-b參數表示建立並切換,至關於如下兩條命令:學習
git branch dev
git checkout dev
git checkout master
git branch //git branch命令會列出全部分支,當前分支前面會標一個*號。
git merge dev //合併指定分支到當前分支(好比這個在master下合併dev)
git branch -d dev //刪除dev分支
通常來講在合併分支時與master存在衝突的狀況下只能手動去把文件修改一致才行。合併過程衝突的話,可使用cat 文件名來查看衝突的內容,衝突部分會用<<<<<<< HEAD這樣的字樣標註。
具體操做教程:分支合併衝突日誌
前面的分支操做屬於Fast Forward模式,這種模式下,刪除分支後,會丟掉分支信息,接下來不使用這種模式。
使用這個模式的其它操做幾乎都同樣,只是在合併的時候加一個參數和一個commit信息。以下:code
git merge --no-ff -m 'no-ff' dev
查看分支歷史圖教程
git log --graph --pretty=oneline --abbrev-commit
首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;
你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。ip
有時候咱們在開發的過程當中遇到bug,須要及時去修復,可是目前分支上的開發任務又無法提交,Git還提供了一個stash功能,能夠把當前工做現場「儲藏」起來,等修復bug之後恢復現場後繼續工做。
git stash //執行了這個命令後用git status就不會看到未提交的信息。
git stash list //查看工做現場的位置 git stash apply //恢復後,stash內容並不刪除,你須要用git stash drop來刪除 git stash pop //恢復的同時把stash內容也刪了 git stash apply stash@{0} //恢復指定的stash,這個stash@{0}參數能夠從git stash list查看
當咱們在開發新功能時須要新建一個分支,可是在開發完事後不要這個功能了,須要刪除這個未合併的分支。
git branch -D feature //刪除未合併的分支須要使用大D。
git remote -v //若是沒有推送權限,就看不到push的地址。
git push origin master
git push origin dev
這個參考教程,比較詳細:多人協做開發
總結爲如下幾步:
查看遠程庫信息,使用git remote -v; 本地新建的分支若是不推送到遠程,對其餘人就是不可見的; 從本地推送分支,使用git push origin branch-name,若是推送失敗,先用git pull抓取遠程的新提交; 在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致; 創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name; 從遠程抓取分支,使用git pull,若是有衝突,要先處理衝突。
git push --set-upstream origin 分支名
eg: git push --set-upstream origin dev