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