參考教程:廖雪峯Git教程git
git init // 把這個目錄變成Git能夠管理的倉庫
git add 文件名 // 添加到倉庫;若是不寫文件名寫.的話則爲增長全部改變的文件 git commit -m "註釋文字" // 提交到倉庫,且只會提交add到倉庫的變化 // commit就像一個快照:一旦你把文件改亂了,或者誤刪了文件,還能夠從最近的一個commit恢復,而後繼續工做,而不是把幾個月的工做成果所有丟失
git status // 主要能夠查看改動的文件有沒有add,有沒有commit
cat 文件名
git diff 文件名 // 查看文件在被添加(add)倉庫以前作了哪些改動,是工做區(work dict)和暫存區(stage)的比較 git diff --cached // 是暫存區(stage)和分支(master)的比較
git rm 文件名 git commit -m "remove" //確認刪除 // 刪除以後可用git checkout -- 文件名 恢復刪除文件
git log // 只能看到在目前版本次以前的歷史版本,看不到目前版本以後的版本 git reflog // 看到全部版本的提交日誌 // 退出操做直接按q便可,或者 esc -> : -> q
git reset --hard HEAD^ //回退到上一版本,HEAD表示當前版本,而後根據^數量判斷向上回退多少個版本 git reset --hard HEAD~100 //回退到100個版本以前,當數量比較多時,用~100表示100個^ git reset --hard 短版本號/長版本號前幾位 // 能夠經過查看版本提交日誌找到版本號 git reset HEAD 文件名 // 把暫存區的修改回退到工做區,即取消add操做;上面三種均可視爲取消commit操做(只要沒有push到遠程庫)
git checkout -- 文件名 // .表示全部文件,讓這個文件回到最近一次git commit或git add時的狀態
git checkout -b dev // 建立並切換到dev分支 // 注意建立分支的意思是在一個新的分支上有着和master/建立以前時的當前分支同樣的代碼 git branch dev // 建立dev分支 git checkout dev // 切換到dev分支
git branch // 查看有哪些分支,當前分支前面有*標誌
git merge dev // 合併dev分支到當前分支 git merge --no-ff -m "xxxxxx" dev // 禁用Fast forward模式
禁用Fast forward模式下的合併邏輯以下圖所示:app
git branch -d dev // 刪除dev分支
衝突主要指的是發起合併的分支和被合併的分支都有增長並提交相應的內容,且二者大機率狀況下是沒法一致的,就會引起衝突。
發生衝突以後,Git會用<<<<<<,=======,>>>>>>>這樣的符號在發生衝突的文件中標記出實際衝突的內容。
根據標記內容對須要對雙方內容進行綜合考慮(通常是發起合併的分支)並提交的文件進行處理而後再正常add和commit便可
貼士:幹活都在分支上,只有發佈在master分支上fetch
git stash // 把如今保存可是沒有add commit的內容暫時封存起來 git checkout -b ano // 建立分支,沒有未add,commit的修改 git stash list // 能夠看到保存的工做內容 git stash apply stash@{0} // 恢復以前保存內容 git stash drop // 刪除已經恢復的保存內容 git stash pop // 恢復的同時把stash內容也刪了
git push origin 分支名 // 若是是第一次推送須要 git push -u origin 分支名 // origin是遠程庫的默認名,可更改爲其餘的
git pull // 或者用下面的2步操做來代替 git fetch origin master git merge origin/master
// 遠程有分支而本地沒有 git pull // 或者用另外一種抓取方法 git checkout -b 拉取的分支名 origin/拉取的分支名 // 本地有而遠程沒有 git push origin 分支名 // push到遠程會自動建立