想必你們都據說過且用過Github(沒據說過-.-),我也一直用Github管理個人代碼到如今,若是你只是將其做爲本身私有的代碼倉庫,那麼平時用得最多的就是git clone, git add以及git commit命令了。本身私人用用還好,可是,涉及與他人合做開發項目時,這些命令就遠遠不夠了。html
因此,該篇博客將從三個方面深刻淺出地講解git的經常使用命令:git
一、建立並克隆遠程庫;github
二、修改並保存到本地版本庫 && 保持本地庫與遠程庫同步;windows
三、分支管理(僅列出經常使用命令)服務器
固然,以上前提是,在你電腦上已經安裝了Git。若是尚未安裝,那麼請根據你的電腦系統,採用正確的方式安裝Git:ssh
--Windows--分佈式
若是你的電腦是Windows操做系統,那麼請狠狠點擊這兒,來下載安裝msysgit(按默認選項安裝便可),俺當年就是這麼在windows系統上安裝git的。fetch
安裝完成後,點擊鼠標郵件,會出現'Git Bash'的選項,那麼恭喜你就安裝成功啦,之後須要輸入git命令,進入Git Bash就能夠敲擊相應的git命令了。spa
--Mac OS X--操作系統
若是你的電腦是Mac,那麼能夠經過homebrew來安裝Git,草雞簡單,詳情請狠狠點擊這兒,俺如今就是這麼安裝的,且,如下演練都是在Mac電腦上操做的,不過Windows平臺的兄弟姐妹們也沒必要擔憂,命令都同樣,so,跟着來妥妥滴。
1、建立並克隆遠程庫 |
衆所周知,Git是分佈式版本控制系統,同一個Git倉庫,能夠分佈到不一樣的機器上。大概作法就是,找一臺電腦充當服務器的角色,天天24小時開機,其餘每一個人都從這個「服務器」倉庫克隆一份到本身的電腦上,而且各自把各自的提交推送到服務器倉庫裏,也從服務器倉庫中拉取別人的提交。咱們徹底能夠從無到有地搭建一個Git服務器,可是暫時沒有必要,由於有Github嘛,它的做用就是提供Git倉庫託管服務的,so,若是你尚未Github去組冊一個吧here。
提示:註冊完了之後,建議採用ssh協議,雖然Git也支持https協議,可是https最大的麻煩就是每次推送都必須輸入口令-。-!!!,在接下來的演示中都將會採起ssh協議。對於ssh是什麼以及如何配置到Github上,請狠狠戳擊這兒
好了,廢話很少說,讓咱們切入正題。
如今假設以個人Github爲例。
首先,咱們在Github上新建一個名爲learnGit的遠程庫,以下操做:
如上,當咱們配置完這個遠程庫信息,點擊'Create repository'後,learnGit遠程庫就搭建好了。是的,就是這麼簡單。
遠程庫建立完成後,咱們就能夠經過git clone命令克隆一個本地庫了。
如,咱們在Document路徑下,經過git clone命令克隆learnGit遠程庫(默認採用SSH協議):
克隆完成後,那麼就會在咱們本地生成一個learnGit的本地版本庫,且clone命令不只僅是將learnGit遠程庫的代碼克隆到本地,並且還會將這個時刻的全部分支信息連接到本地,經過git branch命令,能夠查看本地全部分支信息,以下:
由於目前咱們的遠程learnGit庫只有一個主分支master,故只顯示master分支,*號表明本地庫指向的那個分支。 (關於分支將在第三小結會詳細介紹)
2、修改並保存到本地版本庫 && 保持本地庫與遠程庫同步 |
經過如上操做,此時此刻咱們已經擁有了learnGit本地版本庫。接下來,咱們就嘗試着修改learnGit文件下的README內容,修改以下:
# learnGit
learning the git command and modify a little
接着,經過git status命令查看本地版本庫狀態:
提示中,清楚地告訴咱們README.md文件已修改,且讓咱們用git add命令將"工做區域"變化的文件更新到staged區域,以便接下來的git commit操做;或則,若是咱們想在工做區域撤銷這個修改,那麼咱們能夠經過git checkout -- <file> 這個命令來撤銷。
那麼, git checkout -- <file>是怎麼撤銷的呢?如這裏的README.md文件,首先會查看staged區域是否存儲着README.md文件,若是有,就將README.md文件內容恢復到這個狀態,若是staged區域沒有,那麼就會將README.md文件撤銷回本地版本庫一摸同樣的狀態。
看到這裏,估計你可能已經暈掉。我靠,能說得具體點嗎?!!什麼是工做區域,什麼是staged區域,什麼又是版本庫區域呢。
先來一張圖,以下:
當咱們將Github上的learnGit遠程庫克隆到本地後,就生成了一個本地版本庫master。當咱們在這個本地版本庫下,進行增刪改文件時,其實變化都在工做區域(Working directory)。若是咱們想將這些增刪改的文件與本地版本庫關聯,那麼就得先git add操做命令將這些變化放到stage裏,隨後才能經過git commit命令,將stage裏的變更文件提交到本地版本庫。
好了,咱們首先經過git add命令,將工做區域修改的REDME.md文件添加到stage區域,以下:
而後,再經過git status命令查看,以下:
上圖被紅框框着的區域,清楚的告訴咱們,若是不想將某文件放在stage區域,那麼請使用git reset HEAD <file>命令,使用後就會將指定的file文件從新放回工做區域,也就不會在執行git commit命令後,將其提交到本地版本庫中了。
好了,如今假設咱們就是想將stage區域的變更文件通通提交到本地版本庫中呢?那麼就使用上面提到的git commit命令唄,以下:
而後,咱們再次經過git status命令查看,以下:
圖中,明確地告訴咱們當前分支比遠程庫中的代碼新,那麼能夠用什麼方式將修改傳入到遠程庫呢?答案也已經給出,使用git push命令。
那咱們就執行下git push嘛,運行完畢後,咱們去Github上看看learnGit庫中的READEME文件是否成功修改,結果以下:
看來是成功了。
假若,又有另外的夥伴做用於這個master分支,且改變了其中的代碼並push了,那咱們應該怎樣與遠程master分支保持同步呢?
git pull就能夠了。它會將遠程改變的代碼抓取下來,合併到咱們代碼中。
3、分支管理 |
.git branch
.git branch -D/-d
.git merge
.git checkout
.git fetch
.git stash
.git stash pop
4、拓展閱讀 |
[1]. Learn Git
[2]. Git教程
[3].Git分支