GitHub使用詳解

jopen 10年前發布 | 68K 次閱讀 Git 版本控制系統 Github

1、GitHub是什么?

GitHub這個名詞既可以是那個流行的代碼分享和協作網站 https://github.com/,也可以是指Git客戶端工具(與其他的Git客戶端工具如GitEye類似,只不過Git倉庫托管在GitHub服務器上)。下圖即GitHub客戶端截圖,我已經在GitHub上建立了兩個Git倉庫(Git倉庫地址類似https://github.com/jxqlovejava/MRF.git,以.git結尾),下文所有圖片都可以點擊看大圖(雖然是在Mac系統上操作,使用Windows系統命令行操作也是類似的,之所以采用截圖方式是希望大家自己手動敲一遍命令而不是直接拷貝):

GitHub使用詳解

為什么使用GitHub?個人認為有幾大原因:

  • Git是一個分布式版本控制系統,相對于傳統的集中式版本控制系統如SVN擁有不可替代的優勢,詳細參考 Pro Git中文版
  • GitHub作為一個全球性質的代碼分享和協作編輯網站,擁有強大的社區,并提供了功能強大簡潔的GitHub客戶端(Windows/Linux/Mac三種版本)
  • 幾乎所有的開源項目都能在GitHub上找到
  • GitHub提供了方便的“代碼社交”支持,如協作編輯、Fork、Follow等
  • </ul>

    2、安裝并設置Git和GitHub

    首先當然是下載安裝Git,下載地址請移步:http://git-scm.com/downloads

    然后下載 GitHub客戶端,輸入用戶名密碼(你的GitHub用戶名和密碼,如果沒有GitHub賬號請先注冊一個)后,出現一個設置窗口,點擊Advanced選項卡,在Advanced選項卡面板下部有一個Install Git and Github Command(記得大概是這個),也可以點擊這個按鈕然后自動安裝Git和GitHub命令行工具,我安裝在了/usr/local/bin目錄下:

    GitHub使用詳解

    然后我們可以給git和github設置別名或者export設置路徑,這樣之后就可以在任意目錄下直接執行git和github命令了:

    $ alias git='/usr/local/bin/git'
    $ alias github='/usr/local/bin/github'

    Git的常用命令如下圖:

    GitHub使用詳解

    接下來需要設置默認的git用戶名和git郵箱(github注冊郵箱),這樣設置之后的好處是之后commit本地文件到遠程Git服務器時不再需要每次都輸入用戶名:

    GitHub使用詳解

    更進一步,如果連密碼都不想每次都輸入,該怎么做?可以用credential-osxkeychain這個工具(應該是Mac上才有的,如果非Mac系統請忽略這一小部分內容):

    # 測試是否已安裝credential-osxkeychain
    $ git credential-osxkeychain

    如果已安裝,上面會輸出Usage: git credential-osxkeychain <get|store|erase>

    如果未安裝,則先用CURL下載git-credential-osxkeychain

    $ curl -s -O \ https://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain

    設置下載的git-credentail-osxkeychain文件權限

    $ chmod u+x git-credential-osxkeychain

    將git-credential-osxkeychain移動到git命令行工具所在目錄,我的是/usr/local/bin

    $ sudo mv git-credential-osxkeychain /usr/local/bin

    確認下

    $ cd /usr/local/bin | ls

    設置git的credential helper為git-credentail-osxkeychain

    $ git config --global credential.helper osxkeychain</pre>

    經過上面的設置之后,下次只要第一次輸入用戶名密碼后,用戶名密碼就會被保存在keychain中,后面commit時就再也不需要輸用戶名密碼了。


    3、創建并設置Git倉庫

    在GitHub首頁的右上角有一個加號符號,點擊它就可以看到下面:

    GitHub使用詳解

    點擊“New repository”就可以進入創建Git倉庫(這個是托管在GitHub服務器上的遠程Git庫)頁面了:

    GitHub使用詳解

    填好必要的信息之后,點“Create repository”按鈕就創建好了一個Git倉庫,當然也可以通過GitHub客戶端方便地創建Git倉庫,不再贅述。創建好的Git倉庫路徑類似這種:https://github.com/jxqlovejava/MyFramework.git (記住這個,下面會用到)

    MRF.git就是Git倉庫,它下面可以包含我們的項目文件夾或者其他文件(如說明文件、.gitigonore文件):

    MRF.git

    |--- MRF

    |--- README

    |--- ...

    下面我們先在本地創建一個項目,并為它綁定一個本地Git倉庫,最后git push命令將本地Git倉庫提交到遠程Git服務器上,第一步創建本地Git庫:

    GitHub使用詳解

    然后通過touch和vim命令創建并編輯一個README文件,編輯后按Esc,然后輸入w!保存,再輸入:q返回

    GitHub使用詳解

    繼續通過git add將README設置為staged狀態(等待提交),通過git commit提交修改,使得README狀態由staged狀態變為commited:

    GitHub使用詳解

    最后我們需要將本地git倉庫提交到GitHub遠程Git服務器上,首先添加remote倉庫,并設置它的別名為origin(remote倉庫默認名稱),然后我們將本地master branch提交到遠程Git庫

    GitHub使用詳解

    上面通過git remote add添加了一個遠程Git庫并為它綁定了一個別名origin,我們可以通過git remote remove origin刪除這個綁定關系。master是本地git庫的主干分支,類似SVN的trunk。可以通過git status或者git branch查看當前在哪個分支:

    GitHub使用詳解

    當然有時候我們需要新建一個主干分支以外的分支,比如下面創建一個名為myBranch的分支,然后通過git checkout切換到myBranch分支(創建和切換可以合為一個命令git checkout -b myBranch):

    GitHub使用詳解

    在此之后我又切回master主干分支,并且通過git merge將myBranch分支合并到master主干分支,最后通過git -d刪除myBranch分支:

    GitHub使用詳解


    4、代碼社交化

    首先當然是GitHub上最常見的Watch、Fork和Star,前者會把其他人的GitHub托管項目Fork一份成為自己的GitHub庫,注意Fork的項目不會與原始項目同步,這意味著今后原始項目再更新,Fork的項目不會隨之更新。或者如果對某個GitHub感興趣,可以通過Watch或Star進行關注,之后在GitHub首頁就能看到項目動態:

    GitHub使用詳解

    Fork了代碼之后,可以通過git clone把代碼拷貝到本地:

    GitHub使用詳解

    然后本地即有了一個名為MRF的目錄,其下包含一個README文件,如下:

    GitHub使用詳解

    上面說過Fork的項目不會隨著原始項目的更新而更新,那么某些時候有必要手動Pull更新,然后git merge合并到本地git庫(遠程git庫增加了一個test.txt文件):

    GitHub使用詳解

    upstream只是一個命名約定,即別人的遠程Git庫一般約定為這個別名。

    以上基本涵蓋了Git和GitHub的一般使用,但還沒有涉及如何為其他人創建的Git項目提交代碼,但對于自己創建一個GitHub項目并提交代碼已經足夠了。

    如果使用eclipse開發項目,還有EGit和GitHub for Eclipse插件可以提供Git和GitHub功能,篇幅有限,不再多說了。

    注:本文參考了GitHub首頁的引導教程,更詳細的Git使用請參考 Pro Git中文版

    來自:http://my.oschina.net/feichexia/blog/192755

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!