下面的內容都是我在平時工做中使用頻率較高的場景以及對應的代碼,分享和記錄一下git
git init // 初始化git目錄 git clone // 下載代碼到本地 git add [file1] [file2] ... // 添加指定文件到暫存區 git commit [file1] [file2] ... // 提交暫存區的指定文件到倉庫區 git pull // 從遠程倉庫拉取代碼到本地 git push // 推送本地倉庫到遠程
git branch dev //建立本地分支 git checkout dev //切換本地分支 git push origin dev //提交分支到遠端
git branch -d dev //刪除本地分支 git push origin --delete dev //刪除遠程分支
git merge xxx //合併xxx到當前分支
這個場景用到的挺多的,好比發現了一個Bug,立馬動手去改,卻發現寫到了master或其餘分支上,這時候就須要把咱們剛寫的全部代碼搞到對應的bug分支上去:
git add . //把全部改動暫存 git stash //把暫存的文件提交到git的暫存棧 git checkout //本該提交代碼的分支 git stash apply/pop //將暫存棧中的代碼放出來
git status
git diff origin/master
使用場景:可能咱們寫完了一些功能以後,git commit 到了本地倉庫,以後發現有些地方須要修改或者補充一下,這時候就有了第二次提交,同時有可能出現第三次、第四次提交,這時候git log查看提交日誌就會有無用的提交內容,看上去很不美觀,這時候咱們能夠用git rebase來將屢次提交合併爲一個。
// -i
交互式界面進行rebaseshell
或者
git rebase -i HEAD~3 // 從HEAD開始,須要合併的分支數app
pick:保留該commit(縮寫:p) reword:保留該commit,但我須要修改該commit的註釋(縮寫:r) edit:保留該commit, 但我要停下來修改該提交(不單單修改註釋)(縮寫:e) squash:將該commit和前一個commit合併(縮寫:s) fixup:將該commit和前一個commit合併,但我不要保留該提交的註釋信息(縮寫:f) exec:執行shell命令(縮寫:x) drop:我要丟棄該commit(縮寫:d)
pick d2cf1f9 修改後的信息111 squash 47971f6 修改後的信息222 squash fb28c8d 修改後的信息333
這時候咱們以前提交的屢次commit就會合併爲一個測試
使用場景:提交以後,想要修改commit的message日誌
git commit --amend
使用場景: 。。。code
git log 查看提交歷史 git reset --hard dbf8d691 // 回到指定的提交點
git reflog 查看提交歷史(包含已回滾的提交) git reset --hard dbf8d691 // 回到指定的提交點
使用下邊的命令,能夠知道某個分支是基於那個分支checkout的,以防止merge的時候,把不須要的內容合併到測試或者正式環境。
git reflog --date=local | grep <branchname>
使用場景:在執行git reset --hard 以後,git log就會丟失咱們reset分支以後的內容,想要撤回reset內容看下邊:it
git reflog // 查看log(包含已經reset的log)
此時會顯示出已經reset的分支以後的內容,以後執行git reset --hard
想要到達的分支就行了ast
未完待續...date