0.Git與GitHub的區別
git與github是當代軟件開發中最常用的軟件版本管理工具之一。他們之間名字相似,在功能上也有相似之處,但是在實際應用中,他們要起到的作用是不同的。
(1)git是一個需要下載安裝的軟件,它運行在每一位軟件開發人員自己的電腦上。
(2)github是一個網站,該網站已被微軟收購。
(3)git是一個本地軟件版本管理工具,它的倉儲是建立在本地電腦上的,所以它只能做單人開發時的版本管理
(4)如果團隊開發,並且要做軟件版本管理,只有git就力不從心了,因為我們需要團隊共享同1個倉儲,所以就需要一個共享的倉儲服務器。github就是起到了這樣一個共享的、唯一的、能實現版本控制的、具有服務器性質的遠程倉儲。
總之一句話,git必須與github搭配使用。當然也有github的替代平台碼雲提供了與github完全相同的功能以外,還有自己的特色功能,重點它是國內的服務器,我們用起來速度快。再多説一句,特朗普拉黑華為的時候,github也暫停了對華為的服務。
1、下載安裝Git
這個其實沒什麼好説的,百度git官網,下載與你電腦操作系統匹配的版本,下載之。然後一路next傻瓜安裝就完事了。
唯一需要説明的是在這一步,一定要選擇:Use Git from Git Bash only。如下圖。由於版本不同,可能選項不太一樣,但大致都是如此,選擇bash就ok了。
安裝完後,只要在你電腦的任何一個目錄下拉右鍵,看到有如下圖的2個菜單選項就可以了。
2、初始化項目
在項目目錄下拉右鍵,選擇“Git bash here”選項,進入到Git命令行工具窗口。然後輸入命令
git init
此命令將當前目錄變成一個Git可以管理的倉儲。執行完命令後,你在當前目錄下就能看到多了一個名字叫做“.git”的文件夾。注意,這個文件夾默認是隱藏的,你需要打開隱藏文件才能看到。
如下圖所示:
3、配置當前git用户信息
git config --global user.name "LaoLi" //配置用户名(全局配置)
git config --global user.email "laoli123@163.com" //配置電子郵箱(全局配置)
初次使用git,這兩項是必須配置的。
4、查看配置信息
如果日後想查看git的配置信息,可以使用以下命令
git config –-local -l //查看倉庫級的 config,命令:
git config –-global -l //查看全局級的 config,命令:
git config –-system -l //查看系統級的 config,命令:
git config -l //查看當前生效的配置, 命令:
5、把代碼提交到倉儲的工作區
git add 文件名 //把單個文件提交到git工作區
工作區並不是真正存放代碼的倉庫,我們可以把工作區看做是代碼的暫存區。上面的命令是把1個文件提交到工作區,如果要提交的項目很多,那麼一個一個的提交會非常麻煩,那麼可以使用下面的代碼,一次性把當前項目的所有修改的文件,統一提交到工作區。
git add ./
注意,add命令後面,不管是文件名還是 ./,都不需要用引號包住。
6、查看git管理的項目文件狀態。
git status
7、把代碼提交到倉儲的版本庫
倉儲區才是項目文件真正的家
git commit -m "這是本次提交到倉儲的代碼説明"
這個命令有2個特點:
1.git會一次性的把工作區中所有的文件,全部提交到倉儲中。
2.必須有-m的説明,-m是指令參數,它的值是為了之後項目管理中,便於查詢此次提交的內容是什麼。
有的時候,我們覺得每次代碼修改後,都需要先提交到工作區,然後才能commit到倉儲中,太麻煩了。我想直接提交到倉儲中。那麼你可以使用以下命令
git commit --all -m "這一次是把修改的代碼文件直接提交到倉儲的版本庫"
"--all"是參數,注意,是2個“-”,並且-m説明也不能少
8、查看倉儲提交日誌
git log
這個命令可以查看倉儲的版本庫中所有的版本提交歷史的日誌。它將以詳細的的方式來顯示,如下圖所示。其中紅色框住的是版本id號。
當日志很多的時候,這種方式並不適合我們查看,所以我們需要一種精簡的日誌查看方式。命令如下
git log --oneline
運行效果如下圖所示:
我們看到的結果,不僅信息量精簡了,連版本id都只取了版本號的前7位,但是這其實已經保證絕對不會重複了。所以後邊版本回退的時候,使用的版本號就是這個精簡版的版本號。
9、版本回退
git reset --hard Head~0 // 回退到0號日誌的版本
這裏的Head~0, 0其實就是一個日誌的索引,你可以使用1,2,3.。。。任意正整數,來代表你要回退到的版本號。0是離當前版本最近的上一個版本。
當git管理的項目版本非常多的時候,這麼使用索引來回退是非常不方便的,我們可能更希望使用版本的id號來回退。那麼可以使用如下命令:
git reset --hard 版本號
這裏説明下什麼是版本號,這個號是你在commit的時候,由git自動給你你此次提交的版本生成的唯一編號,完整的版本號非常長,這裏reset命令使用的版本號是精簡的id號,它就是我們使用git log --oneline時,看到的版本號。
這裏有個問題,就是如果我記不住項目的版本號,或者由於種種原因已經看不到某1個版本號,那麼可以使用下面的命令,來查看所有的版本號。
git reflog
這個命令實際看到的是所有對版本切換的操作記錄。這裏就有版本號。
10、創建子分支
首先我們要知道什麼是分支。我們啓動運行git的時候,默認的是主分支,也就是master分支。
創建子分支的命令如下:
git branch 分支名
這裏分支名可以是任意字符串。比如:git branch dev。
我們可以通過下面的命令來查看當前所有的分支
git branch
11、切換分支
當我們的本地倉儲有多個分支之時,可以在不同的分支之間切換。命令如下:
git checkout 分支名
12、合併分支
項目開發到一定程序,需要把其他分支的代碼合併到主分支。
合併分支時,首先要回到master分支。
git checkout master
然後才能把其他子分支合併過來,比如我們合併dev分支提交的代碼。
git merge dev
13、刪除分支
刪除分支時要注意:
1.master分支,也就是主分支是不能刪除的。
2.必須先回到master分支,才能刪除其他子分支。
刪除子分支命令如下:
git branck -d 分支名
14、GitHub註冊
打開GitHub官網:https://github.com/,默認就是註冊的UI界面。如果不是,你也可以點擊左上角的 "sign up" 註冊。
15、登錄GitHub
註冊完成後是默認為登錄狀態的。如果沒有,你也可以點擊第14步,所示圖片的右上角“sign in”來進行登錄。登錄UI界面如下:
登錄完成後進入賬號主界面,如下:
16、創建GitHub倉儲。
我們把GitHub上創建的倉儲叫遠程倉儲。創建倉儲的操作非常簡單。操作如圖所示:
然後你會看到如下界面
填寫完了,點擊“Create repository”就創建了倉儲。你會看到類似下面的界面
這裏最關鍵的就是記下這個倉儲的URL,這個URL將作為我們日後通過Git把本地代碼上傳到GitHub時的URL。
當然這個地址你不需要去記,你可以隨時登錄自己的GitHub賬號,然後通過上面的操作來查看。
到這裏,我們GitHub上的操作就暫時告一段落了。接下來,就是如何通過Git把代碼上傳到GitHub的指定倉儲,或者把指定倉儲中的代碼下拉到本地。
17、通過Git把本地代碼上傳到GitHub指定倉儲
首先,你需要通過第16步中的操作,記下GitHub對應倉儲的URL。
然後,打開Git本地項目的bash窗口,在窗口中輸入如下命令:
git push github遠程倉儲的URL master
這個命令的關鍵詞是push,它是上傳代碼的命令。該命令的最後master,是分支的名字,這裏是主分支名字,表示我們把本地的代碼上傳到GitHub的倉儲的master分支。這裏的潛台詞就是,GitHub也是有分支這1概念的,而且也跟本地Git的分支相照應。
當你第一次上傳代碼的時候,git會彈出1個類似於登錄的對話框,讓我們輸入遠程倉儲對應的賬號和密碼。這很好理解,總不能隨便是個人就能上傳代碼吧。
恕我不能截圖,因為只要登錄一次,本地git就會記錄下來這個賬號密碼,之後再push的時候就不用反覆輸入了。
18、配置push命令的地址
如果每次push的時候,都要寫倉儲的URL,將是一件非常麻煩的事情。我們可以通過配置,在本地記錄下來這個地址,然後給它起個別名,之後再用到這個地址的時候,我們只需要使用別名就可以了。配置的命令是:
git remote add [別名] 倉儲URL
例如下圖,我就給遠程倉儲的URL起了個別名AsLifeProj
實際上,這個命令最終是往.git目錄下的config文件裏寫下了如下一些信息。
這個文件是純文本文件,用記事本打開就可以看到源碼。
這個配置了以後,我們再次push代碼,就可以使用這個別名了,例如:
git push AsLifeProj master
需要注意的是,在第一次push的時候,系統會讓我們輸入用户名和密碼,如下圖所示:
這裏輸入你的github賬號和密碼就可以了。以後push就都不用輸入了
19、把GitHub倉儲中的項目代碼下拉到本地
下拉也就是下載的意思,或者叫同步也行。這個操作使用的命令是pull,它的用法非常類似於push命令,格式如下:
git pull [遠程倉儲URL] [分支名]
如果你有上一步的配置別名,pull命令的遠程倉儲URL也可以使用別名。