一、把文件提交到版本庫:git
二、版本回退:github
三、還原文件操做:spa
四、撤銷修改:指針
五、刪除文件:日誌
六、添加遠程庫:開發
七、從遠程庫克隆:rem
八、建立和合並分支:it
九、解決衝突:ast
十、分支管理:stream
十一、Bug分支:
十二、feature分支:
1三、多人協做:
開始:
把文件提交到版本庫:
commit能夠一次提交不少的文件,因此你能夠屢次add不一樣的文件而後再一次行commit。
版本回退:
Git倉庫中有一個HEAD指針,指向的是當前版本,Git能夠在版本的歷史之間來回穿梭:git reset --hard commit-id
穿梭到前面的版本:可使用git log查看提交日誌,方便肯定回退到哪個版本。
回來將來的版本: 用git reflog查看歷史命令
還原文件操做:
git checkout -- <filename> 會產生兩種狀況:一、在你作出修改後尚未添加到暫存區,如今撤銷就是回到和版本庫一摸同樣的狀態。 二、添加到了暫存區,又做了修改,如今撤銷就是回到添加到暫存區後的狀態
總之就是能夠回到最近一次git commit 或git add 時的狀態
撤銷修改:
添加到了暫存區尚未提交,可使用git reset HEAD <filename>能夠把暫存區的修改撤銷掉,從新放回到工做區。
刪除文件:
在文件管理器中能夠直接rm <filename>可是這時候工做區和版本庫就不一致了
兩個選擇:一、肯定要從版本庫中刪除該文件,就用git rm <filename>進行刪除, 而且進行git commit。 二、刪錯了,那麼版本庫中仍是存在的,可使用git checkout -- <filename>將誤刪的文件恢復到最新版本。
刪除GitHub上的文件:git rm -r --cached <文件名> 完成這步操做以後還須要將此次操做進行一次commit,而後才能完成刪除的整個過程
git rm用於刪除文件,若是文件已經被提交到了版本庫,那沒必要擔憂誤刪,可是隻會恢復到最新的一次提交,會丟失最近一次提交後修改的內容。
添加遠程庫:
因爲剛開始遠程庫是空白的,因此第一次推送master時要加上-u,以後Git不但會把本地的master分支上的內容推送到遠程新的master分支,還會吧本地和遠程鏈接起來,之後再推送就能夠git push origin master
從遠程庫克隆:
git clone git@github.com:帳戶名/倉庫名.git
建立和合並分支:
一開始master是一條線,Git用master指向最新提交,再用HEAD來指向master。每次提交master都會遷移一步,隨着不斷提交,master分支會愈來愈長。
建立分支:建立一個dev分支並切換到dev分支:git checkout -b dev 這是將兩步合成了一步一、git branch dev:建立dev分支 二、git checkout dev :切換到dev分支
建立完成分支以後,進行你想要進行的一些修改,而後再切回到master分支
合併分支:git merge + <分支名>用於合併指定的分支,直接將master指向了dev分支,在完成以後就能夠刪除dev分支了:git branch -d dev
解決衝突:
當Git沒法自動合併分支時,必須手動進行合併,解決以後再進行提交,合併完成。(其實就是把Git合併失敗的文件手動編輯爲咱們但願的文件,再進行提交)
git log --graph --pretty=oneline -abbrev-commit :查看分支合併圖
分支管理:
Fast Forward模式:這種方式刪除分支會丟掉分支信息(Git默認的就是使用的這種方式)
如何要禁止Fast Forwar? Git會在merge時生成一個新的commit,這就能夠從歷史上看出提交的信息了。
建立dev分支
修改文件並提交新的commit
切回到master(主分支)
最後進行合併分支git merge --no-ff -m"" dev
首先master應該是很是穩定的,僅是用來發布最新的版本,每一個人都應該擁有屬於本身的分支,而後在dev上進行幹活。
Bug分支:
當出現Bug時,這時候手頭上的工做也尚未完成,能夠先git stash一下,而後去修改Bug,修復完成後,在git stash pop回到工做現場
feature分支:
開發新的功能最好新建一個feature分支。
若是要丟棄一個沒有被合併過的分支,能夠用git branch -D <分支名> 來進行強行刪除
多人協做:
從本地分支推送: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 若是有衝突按照上面的方法解決衝突