初始化 一個git倉庫: 使用命令 ***git init **
複製代碼
分兩步執行git
使用命令見文件添加到緩存區: **git add ( fileName )**
多個文件用逗號隔開 : **git add 文件名1 , 文件名2 **
直接添加全部 : **git add .**
複製代碼
使用命令 : git commit -m "提交說明"
屢次修改本地文件 而後 git add . 會將屢次提交的文件變化一次性提交到本地倉庫
複製代碼
git status緩存
若是沒有提交的文件,會顯示 working tree clean , 表示工做目錄是乾淨的!
複製代碼
git diff 文件名bash
diff : difference
複製代碼
git logui
git log
命令顯示從最近到最遠的提交日誌記錄。spa
若是嫌輸出信息太多,看得眼花繚亂的,試試這個命令: git log --pretty=oneline
複製代碼
用
HEAD
表示當前版本日誌HEAD^ 表示上一個版本code
HEAD^^表示上上一個版本開發
以此類推..... 表示第100個版本我門能夠用 HEAD~100 複製代碼
git reset --hard HEAD^rem
git reset --hard 版本號(也就是一串很長的版本id)get
若是在恢復到最新版本,可是又忘記 commit id 了, 能夠試試這個命令會記錄每一次你使用的每一次命令!
複製代碼
gti reflog
丟棄工做區區的修改(也能夠手動刪除)
$ git checkout -- 文件名
複製代碼
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工做區的修改所有撤銷,這裏有兩種狀況:
一種是
readme.txt
自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;一種是
readme.txt
已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
`
git rm 文件名
git checkout -- test.txt
複製代碼
新建分支
git branch 分支名
切換分支
git checkout 分支名
查看分支
git branch
當前分支會顯示帶 *
合併分支
git merge 命令用於合併指定分支到當前分支(切換後的分支)
git merge 分支名
git log --graph`命令能夠看到分支合併圖。
刪除分支
git branch -d 分支名
修復bug時,咱們會經過建立新的bug分支進行修復,而後合併,最後刪除;
當手頭工做沒有完成時,先把工做現場git stash
(會將本地工做區修改的文件變化隱藏起來,git status命令是沒法看到的)一下,而後去修復bug,修復後,再git stash pop
,回到工做現場。
查看bug分支 git stash list
開發一個新功能分支
開發一個新feature,最好新建一個分支;
若是要丟棄一個沒有被合併過的分支,能夠經過git branch -D <name>
強行刪除。
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
,若是有衝突,要先處理衝突。重要的總結
HEAD
指向的版本就是當前版本,所以,Git容許咱們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。- 穿梭前,用
git log
能夠查看提交歷史,以便肯定要回退到哪一個版本。- 要重返將來,用
git reflog
查看命令歷史,以便肯定要回到將來的哪一個版本。
git reset命令既能夠回退版本,也能夠把暫存區的修改回退到工做區。當咱們用
HEAD`時,表示最新的版本。
場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令
git checkout -- file
。場景2:當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令
git reset HEAD <file>
,就回到了場景1,第二步按場景1操做。
查看工做目錄和暫存區去的差異
git diff
工做目錄和本地倉庫差異
git diff HEAD
暫存區和本地倉庫差異
git diff --cached
詳細請查看 原文