GIT必備
學GIT一定要牢記下圖以及箭頭所示命令執行結果
箭頭的起點標識執行命令後數據的來源,箭頭的終點表示命令執行後的數據目的地
首先要明白這幾個概念
- Workspace:工作區
- Index / Stage:暫存區
- Repository:倉庫區(或本地倉庫)
- Remote:遠程倉庫
簡要介紹上述常用命令: 黑色字體為我工作中常用的命令,其他也都是必須要知道的和了解的
場景1、當我們剛安裝GIT我們需要如下操作
1、clone 從GIT遠程服務器下載源代碼到本地倉庫
2、checkout 切分支。下載完代碼,我們可能在master分支,需要基於master切一個新分支。到工作區
3、add 我們在新分支的創建,修改 需要加到暫存區 index
4、commit 將我們剛剛加到暫存區的代碼,提交到本地倉庫
5、push 將我們本地倉庫的提交,推送到遠程服務器
場景2、開發中發現服務端有其他同學提交的代碼,怎麼辦
1、pull 從服務端拉取最新代碼到本地工作區
以上是對上圖的常見操作,但是工作中還有更多的命令需要我們掌握,接下來詳細介紹
一、工作區的文件
提交到暫存區
1、git add [文件名1] [文件名2] ... 添加指定文件
2、git add . 一次性添加所有工作區文件到暫存區
3、 git rm [文件名1] [文件名] ... 刪除工作區文件,並且將這次刪除放入暫存區
二、提交,將暫存區的文件,提交到本地倉庫
message是提交說明
1、git commit -m [提交信息] 提交暫存區到倉庫區
2、git commit [文件名1] [文件名2] ... -m [提交信息] 提交暫存區的指定文件到倉庫區
3、 git commit -am [提交信息] 提交工作區自上次commit之後的變化,直接到倉庫區,比較常用 節省了加入暫存區的過程
三、分支操作
1、git branch 列出本地所有分支
2、git branch -r 列出遠程所有分支
3、git branch -a 列出本地和遠程所有分支
4、 git branch [分支名] 新建一個分支,但依然停留在當前分支
5 、git checkout -b [分支名] 新建一個分支,並切換到該分支 branch-name為新建的分支名稱
6、 git checkout [分支名] 切換到指定分支
7、 git checkout - 切換到上一個分支
8、 git branch -d [分支名 ] 刪除本地分支 不能刪除當前所在分支,需要切換到其他分支時使用
9、git push origin --delete [分支名] 刪除遠程分支
10、git merge [分支名] 合併指定分支到當前分支 一般都是將master合併到當前分支
分支切換利器,我們經常會遇到,正在一個分支上開發,寫了很多東西,其中提交了一部分,一部分正在寫,還沒寫完,這時突然來個線上問題,需要我們切換到線上分支去處理,我們怎麼辦,提交?還沒寫完,還不能通過編譯,不提交,放棄?更不可能 辛苦工作一天了。這時就需要下面這個命令,特別長用
git stash 暫時將未提交的變化暫存,形成類似一個快照,然後就可以隨意切換到其他分支了。
git stash pop 當在其他分支解決完問題,切換到當前分支,執行該命令,之前的暫存快照又恢復了,可以繼續工作了
四、撤銷操作
我們會經常遇到寫完的代碼,或者提交的代碼需要回滾,也就是撤銷或者回退到某個狀態,這個就是考驗GIT熟悉程度了。GIT出錯最多的時候就是merge 和撤銷。這裡要多下點功夫,否則和沒用過GIT也沒什麼區別
1、恢復暫存區的指定文件到工作區(將工作區修改的內容,恢復和暫存區一樣),比如你剛剛修改了某個文件,還沒有add操作,想放棄修改,但是改的太零散那就是用如下命令。
git checkout [文件名] 恢復指定文件
git checkout . 恢復全部文件
2、重置文件到指定commit,有多種狀態,注意區分
git checkout [某次提交的hash值] [文件名] 恢復某個commit的指定文件到暫存區和工作區
git reset --hard 重置暫存區與工作區,與上一次commit保持一致
git reset [commit] 重置當前分支的指針為指定commit,同時重置暫存區,但工作區不變
git reset --hard [commit] 重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致
git reset --keep [commit] 重置當前HEAD為指定commit,但保持暫存區和工作區不變
3、一個比較特殊的重置,以新的提交來覆蓋,需要仔細思考,對比和reset的區別
git revert [commit] 新建一個commit,用來撤銷指定commit 後面的所有變化都將被抵消,並且應用到當前分支
五、其他查看命令
git status 顯示有變更的文件,以及當前所處分支
git log 顯示當前分支的版本歷史
git log --stat 顯示commit歷史,以及每次commit發生變更的文件
git log -S [關鍵詞] 搜索提交歷史,根據關鍵詞
git diff 對比文件修改了哪些內容
git diff HEAD 顯示工作區與當前分支最新commit之間的差異
好了這是我常用的GIT命令,如有不足 多多指出。
閱讀更多 BeginCode 的文章