首先指出,,Git和Github不是一個(gè)概念,,完全沒有可比性。 Git可以說是每個(gè)程序員必備的技能,,Github是檢驗(yàn)一個(gè)程序員是否合格的標(biāo)準(zhǔn),。反正這東西雖然不一定要十分精通,但一定要能懂會(huì)用,。Git是一個(gè)實(shí)用的版本控制(代碼管理)工具,,Github則是一個(gè)倉庫托管(代碼共享)平臺(tái),全國大神聚集的地方,,裝逼神器,。 關(guān)于Git的詳細(xì)教程建議閱讀其官方文檔,中文版,,就是有點(diǎn)多,,對于一般人來說閱讀前三章即可,。本篇文章主要介紹下面這幾個(gè)方面:
這是我總結(jié)的對于一般開發(fā)人員來說,比較實(shí)用的幾個(gè)方面,。本篇文章,,只會(huì)引入幾個(gè)概念和一些比較重要的思想,不是一篇純教程,。 Git的基本使用Git是一個(gè)分布式版本控制工具,,對應(yīng)的SVN則是集中式版本控制工具。如果你不知道SVN,,那也沒必要去學(xué)它了(除非工作需要),,直接學(xué)Git可能更實(shí)用一點(diǎn)。 分布式和集中式簡單的說,,集中式,,就是將項(xiàng)目集中在一臺(tái)服務(wù)器上進(jìn)行管理。而分布式就是將項(xiàng)目分布在各臺(tái)計(jì)算機(jī)或服務(wù)器中進(jìn)行管理,。分布式管理中每臺(tái)計(jì)算機(jī)都是一個(gè)完整的倉庫,,而集中式管理中只能在服務(wù)器中進(jìn)行版本管理。聽起來可能很模糊,,詳細(xì)請參考官方介紹,。 基本使用
# 名稱和郵箱隨意, Git僅用于記錄身份 $ git config --global user.name 'John Doe' $ git config --global user.email [email protected]
# 在項(xiàng)目根目錄下運(yùn)行 初始化一個(gè)本地倉庫 $ git init # 跟蹤文件 或?qū)⑽募砑拥?暫存區(qū) $ git add 文件名 # 提交 將暫存區(qū)的文件提交到版本控制中 $ git commit -m '提交信息' # 查看當(dāng)前版本狀態(tài) 有事沒事多敲敲 $ git status 這是一個(gè)最基本的操作流程,。但是實(shí)際使用中,,總是不會(huì)如此順利,會(huì)遇到各種問題和需求,。建議:
# 比如查看push相關(guān)的用法 $ git push -h # 或 $ git push --help 這里補(bǔ)充一下,,Git有三個(gè)工作區(qū)域:工作目錄,、暫存區(qū)、Git倉庫,。我們寫代碼可以直接操作的是工作目錄,,通過git add將文件添加到暫存區(qū),git commit指令將文件提交到Git倉庫,。 實(shí)用技巧
$ git checkout -- 文件名
$ git reset HEAD 文件名
# 移除git倉庫中所有文件,,不會(huì)從真實(shí)的目錄移除 $ git rm -r --cached . 這種情況是Git倉庫中已經(jīng)有了(跟蹤了)某個(gè)文件,然后又修改了.gitignore文件,,所以需要用上面的命令將要忽略的文件從Git倉庫中移除,。.代表移除所有文件。
# 刪除該文件即可 $ rm -rf .git/index.lock 出現(xiàn)該問題一般都是之前手動(dòng)或其他問題而終止了某條命令。 Git與GitHub搭配使用對于個(gè)人來說,,Git的遠(yuǎn)程倉庫大多都是github。要將一個(gè)本地倉庫推送到github上,,首先必須github上要存在一個(gè)與本地同名的倉庫,,并且與本地倉庫關(guān)聯(lián)起來。 基本使用你有兩種方式可以選擇,,第一就是首先在github上建立項(xiàng)目倉庫,,然后克隆到本地使用。 $ git clone [email protected]:username/project-name.git 第二種就是本地已經(jīng)存在一個(gè)項(xiàng)目倉庫,,然后先在github上建立一個(gè)同名的倉庫,,并關(guān)聯(lián)起來。 # 添加遠(yuǎn)程倉庫 $ git remote add origin [email protected]:username/project-name.git # 推送到遠(yuǎn)程服務(wù)器 $ git push -u origin master 如果push失敗,,先pull更新到本地,,然后再執(zhí)行上面的push命令。這里的origin是遠(yuǎn)程倉庫的名稱,,也是默認(rèn)的,。一個(gè)本地的Git倉庫可以添加多個(gè)遠(yuǎn)程倉庫,遠(yuǎn)程倉庫名用來區(qū)分每個(gè)遠(yuǎn)程倉庫(一般可能用不上,,對于個(gè)人來說,,遠(yuǎn)程倉庫一般都是github一個(gè))。 配置SSH如果要使用github,,配置一個(gè)SSH公鑰也是必不可少的,。如果你執(zhí)行某項(xiàng)操作提示你沒有權(quán)限,那么很有可能就是沒有正確配置SSH公鑰,。 一臺(tái)本地計(jì)算機(jī)對應(yīng)一個(gè)SSH公鑰,,一個(gè)github賬號(hào)可以添加多個(gè)SSH公鑰,也就是說可以通過多臺(tái)電腦來管理一個(gè)github賬號(hào)下的項(xiàng)目倉庫,。 # 生成SSH公鑰 一路回車即可 $ ssh-keygen # 查看生成的SSH公鑰 $ cat ~/.ssh/id_rsa.pub 然后,,復(fù)制所有查看到的內(nèi)容,添加到github上即可,。 Git分支Git的另一個(gè)重要的特性就是分支,,要學(xué)好分支,必須得先弄懂Git分支的本質(zhì),。 理解分支每建立一個(gè)Git倉庫,,默認(rèn)就有一個(gè)master分支(主分支)。Git中的分支本質(zhì)上就是一個(gè)指向commit對象的指針,。每commit一次,,就對應(yīng)一個(gè)提交記錄(暫且就叫版本號(hào)),把這些提交記錄想象成一條串聯(lián)起來的方塊,而分支就是指向這些方塊的指針,。 因此,,在一個(gè)分支上的所有修改和提交只會(huì)將當(dāng)前分支的指向往最新的版本移動(dòng),而其他分支依舊指向原來的提交版本,,不會(huì)有任何影響,。 Git中可以有很多分支,HEAD指針指向當(dāng)前的分支,,建議參考官方解釋,,圖文例子很形象,一定要理解它的本質(zhì)和原理,。 基本操作# 創(chuàng)建分支 $ git branch 分支名 # 創(chuàng)建并切換到分支 $ git checkout -b 分支名 # 刪除分支 $ git branch -d 分支名 # 合并其他分支到當(dāng)前分支 $ git meger 分支名 對于新手,,建議不要在重要的項(xiàng)目上試用各種分支操作,不然你會(huì)越高越亂,,最后可能就回不去了,。 GitHub靜態(tài)站點(diǎn)github有一個(gè)十分強(qiáng)大的特性,就是每一個(gè)倉庫,,都可以是一個(gè)可訪問的靜態(tài)站點(diǎn),,也就是說,你可以將html文件放在倉庫中,,可以通過域名的方式來訪問這個(gè)頁面,。 github提供一個(gè)主站點(diǎn),它的倉庫名必須是username.github.io(username就是你自己的用戶名),,默認(rèn)訪問的域名是username.github.io,,而且還可以配置自己的域名(比如baidu.com,前提是這個(gè)域名是你的),。其他項(xiàng)目站點(diǎn)都只能通過username.github.io/project-name的形式訪問,。大多數(shù)人都會(huì)用這個(gè)主站點(diǎn)搭建一個(gè)個(gè)人的主頁或博客之類的,網(wǎng)上與之相關(guān)的教程很多,,對于非專業(yè)的前端開發(fā)人員,,大多就是采用hexo來快速搭建自己的博客系統(tǒng)。有興趣的可以自己百度hexo關(guān)鍵字,,會(huì)有很多相關(guān)的教程,。 其他項(xiàng)目有三種方法將倉庫配置為可訪問的站點(diǎn),具體請參考這里,。 后記Git對于剛接觸的人可能并不友好,,一路走來,我不知道弄壞了多少個(gè)項(xiàng)目倉庫,。最好是身邊有會(huì)的人指導(dǎo),,這樣會(huì)少走很多彎路。我的前端開發(fā)之路只有我一個(gè)人,而且所有東西全部都是靠自學(xué),,吃過的苦踩過的坑也是不計(jì)其數(shù),。 到現(xiàn)在,也算是真正步入前端這個(gè)行業(yè)了,。知道前端需要學(xué)些什么,,也知道一些東西的基本用法,自學(xué)的時(shí)候就會(huì)有一個(gè)比較明確的方向,。 本文轉(zhuǎn)自:簡書 微信號(hào):IdeaofSE |
|