git add . //所有提交到暫存區
git commit -m <description> //提交到本地庫(必須先add) git commit -am //可提交未add文件,可是不包括未建立文件 git commit --amend //這個命令會將暫存區中的文件提交。 若是自上次提交以來你還未作任何修改(例如,在上次提交後立刻執行了此命令),那麼快照會保持不變,而你所修改的只是提交信息。
git rm <file> //從暫存區刪除(stage) git rm -f <file> //刪除以前修改過而且已經放到暫存區域 git rm --cached <file> //若是把文件從暫存區域移除,但仍然但願保留在當前工做目錄中,換句話說,僅是從跟蹤清單中刪除
在Git中,用HEAD表示當前版本。git
git HEAD git HEAD~ //上一個版本 git HEAD~100 //往上100個版本
git checkout <file> //恢復未提交的更改 git reset HEAD <file> //取消以前 git add 添加
git reset --hard HEAD~ //回退到上一個版本 git reset --hard <commit ID> //回退到指定版本
版本直接回退,簡單粗暴。
若是遠程分支也想要回退,git push -f (known changes)。shell
git revert HEAD //撤銷前一次commit
不能隨便刪除已經發布的提交,這時須要經過revert建立要否認的提交。緩存
若是不當心提交了不想要的代碼,而小夥伴在你發現時,已經提交了,這時候就不能簡單的回退版本。工具
git revert <commit ID> //須要撤銷的提交ID
這時候會有衝突,解決衝突以後,再從新提交,那麼就會產生一條新的提交紀錄。
提交到遠程分支,git push。this
git revert 和 git reset的區別
git mv 命令用於移動或重命名一個文件、目錄。spa
git mv <file> git mv <old name> <new name>
其實,運行 git mv 就至關於運行了下面三條命令:code
mv README.md README git rm README.md git add README
git rebase和git merge區別
在rebase的過程當中,也許會出現衝突(conflict)。 在這種狀況,Git會中止rebase並會讓你去解決衝突;在解決完衝突後,用"git-add"命令去更新這些內容的索引(index), 而後,你無需執行 git-commit,只要執行:索引
git rebase --continue //繼續 git rebase --abort //取消
在rebase指定i選項,您能夠改寫、替換、刪除或合併提交。圖片
git rebase -i [startpoint] [endpoint]
其中-i的意思是--interactive,即彈出交互式的界面讓用戶編輯完成合並操做,[startpoint] [endpoint]則指定了一個編輯區間,若是不指定[endpoint],則該區間的終點默認是當前分支HEAD所指向的commit(注:該區間指定的是一個前開後閉的區間)。ip
合併歷史紀錄
git rebase -i HEAD~2 //咱們會進入vit模式,將pick改爲squash,而後按esc : wq(保存並退出)。 git push -f
要查看哪些文件處於什麼狀態。
git status -s | git status --short //獲得一種更爲緊湊的格式輸出
git diff 命令顯示add與commit的改動區別。
git diff <file> //還沒有緩存的改動 git diff --cached //查看已緩存的改動 git diff HEAD //查看已緩存的與未緩存的全部改動 git diff --stat //顯示摘要而非整個 diff
在提交了若干更新,又或者克隆了某個項目以後,你也許想回顧下提交歷史。 完成這個任務最簡單而又有效的工具是 git log 命令。
git log -p //用來顯示每次提交的內容差別 git log -2 //僅顯示最近兩次提交 git log --stat //每次提交的簡略的統計信息 git log --pretty //指定使用不一樣於默認格式的方式展現提交歷史,git log --pretty=oneline
使用git show命令查看某一次提交詳細信息。
若是在回退之後又想再次回到以前的版本,git reflog 能夠查看全部分支的全部操做記錄(包括commit和reset的操做),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄。
git reflog
在Git中,隱藏操做將使您可以修改跟蹤文件,階段更改,並將其保存在一系列未完成的更改中,並能夠隨時從新應用。
git stash //把當前工做的改變隱藏起來 git stash list //查看已存在更改的列表 git stash pop //可從堆棧中刪除更改並將其放置在當前工做目錄中
git branch <branch name> //建立分支 git checkout <branch name> //切換到分支 git checkout -b <branch name> //建立並切換到分支
git branch -d <branch name> git branch -D <branch name> //強制刪除分支
git branch <name> git branch -a //查看全部分支 git branch -r //查看遠程分支
git branch -m <old name> <new name>
git checkout master //切換到master git merge <branch name> //合併分支
若是分支未pull最新代碼,那麼提交的時候,歷史紀錄就不清晰;匯合分支上的提交,而後一同合併到分支
git merge –squash <branch name> git commit -am git push
在cherry-pick,您能夠從其餘分支複製指定的提交,而後導入到如今的分支。
git cherry-pick <commit id>
若是你達到一個重要的階段,並但願永遠記住那個特別的提交快照,你可使用 git tag 給它打上標籤。
git tag <name> git tag -a <name> //建立一個帶註解的標籤
git tag
git show <tag name> git push origin <tag name>
git tag -d <name>
#Ignore everything in this directory * #Except this file !.gitignore