github新手入門

【初識(shí)Github】

Git是一個(gè)分布式的版本控制系統(tǒng),最初由Linus Torvalds編寫,用作Linux內(nèi)核代碼的管理。在推出后,Git在其它項(xiàng)目中也取得了很大成功,尤其是在Ruby社區(qū)中。目前,包括Rubinius和Merb在內(nèi)的很多知名項(xiàng)目都使用了Git。Git同樣可以被諸如Capistrano和Vlad the Deployer這樣的部署工具所使用。同樣,eoe.cn客戶端的源碼也托管在github上。

GitHub可以托管各種git庫(kù),并提供一個(gè)web界面,但與其它像 SourceForge或Google Code這樣的服務(wù)不同,GitHub的獨(dú)特賣點(diǎn)在于從另外一個(gè)項(xiàng)目進(jìn)行分支的簡(jiǎn)易性。為一個(gè)項(xiàng)目貢獻(xiàn)代碼非常簡(jiǎn)單:首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按鈕,然后將代碼檢出并將修改加入到剛才分出的代碼庫(kù)中,最后通過(guò)內(nèi)建的“pull request”機(jī)制向項(xiàng)目負(fù)責(zé)人申請(qǐng)代碼合并。已經(jīng)有人將GitHub稱為代碼玩家的MySpace。

在GitHub進(jìn)行分支就像在Myspace(或Facebook…)進(jìn)行交友一樣,在社會(huì)關(guān)系圖的節(jié)點(diǎn)中不斷的連線。

GitHub 使用 git 分布式版本控制系統(tǒng),而 git 最初是 Linus Torvalds 為幫助Linux開(kāi)發(fā)而創(chuàng)造的,它針對(duì)的是 Linux 平臺(tái),因此 git 和 Windows 從來(lái)不是最好的朋友,因?yàn)樗稽c(diǎn)也不像 Windows。GitHub 發(fā)布了GitHub for Windows,為 Windows 平臺(tái)開(kāi)發(fā)者提供了一個(gè)易于使用的 Git 圖形客戶端。

GitHub For Windows
GitHub for Windows 是一個(gè) Metro 風(fēng)格應(yīng)用程序,集成了自包含版本的 Git,bash 命令行 shell,PowerShell 的 posh-git 擴(kuò)展。GitHub 為 Windows 用戶提供了一個(gè)基本的圖形前端去處理大部分常用版本控制任務(wù),可以創(chuàng)建版本庫(kù),向本地版本庫(kù)遞交補(bǔ)丁,在本地和遠(yuǎn)程版本庫(kù)之間同步。微軟也通過(guò)CodePlex向開(kāi)發(fā)者提供 git 版本控制系統(tǒng),而 GitHub 創(chuàng)造了一個(gè)更具有吸引力的 Windows 版本。

GitHub上已自動(dòng)配置的Mac筆記本電腦,一個(gè)工具,可以轉(zhuǎn)換設(shè)置Linux或Windows機(jī)器。

BOXEN是GitHub的自動(dòng)化工具,設(shè)置和配置的Mac筆記本電腦軟件開(kāi)發(fā)[3]或其他類型的工作,正在使用他們的開(kāi)發(fā)人員,律師,設(shè)計(jì)師,付貨人,等。我們的想法是準(zhǔn)備系統(tǒng)以自動(dòng)方式和作為無(wú)差錯(cuò)盡可能用最少的干預(yù)工作。根據(jù)GitHub上,與一個(gè)新的開(kāi)發(fā)機(jī)器上,他的Mac系統(tǒng)成立,并準(zhǔn)備在30分鐘內(nèi)提交代碼。

BOXEN的基礎(chǔ)上收集了大量的幾十個(gè)木偶模塊,使設(shè)置的各種軟件,如卡桑德拉,MongoDB中,Java軟件中,Python和Ruby開(kāi)發(fā)中,節(jié)點(diǎn),JS,nginx的,Skype公司,甚至MINECRAFT。雖然機(jī)器上配備了一個(gè)預(yù)配置,每個(gè)用戶都可以調(diào)整它的配置應(yīng)有的作用。

【如何使用】

1.注冊(cè)賬戶以及創(chuàng)建倉(cāng)庫(kù)

要想使用github第一步當(dāng)然是注冊(cè)github賬號(hào)了。之后就可以創(chuàng)建倉(cāng)庫(kù)了(免費(fèi)用戶只能建公共倉(cāng)庫(kù)),Create a New Repository,填好名稱后Create,之后會(huì)出現(xiàn)一些倉(cāng)庫(kù)的配置信息,這也是一個(gè)git的簡(jiǎn)單教程。

2.安裝客戶端msysgit

github是服務(wù)端,要想在自己電腦上使用git我們還需要一個(gè)git客戶端,我這里選用msysgit,這個(gè)只是提供了git的核心功能,而且是基于命令行的。如果想要圖形界面的話只要在msysgit的基礎(chǔ)上安裝TortoiseGit即可。

裝完msysgit后右鍵鼠標(biāo)會(huì)多出一些選項(xiàng)來(lái),在本地倉(cāng)庫(kù)里右鍵選擇Git Init Here,會(huì)多出來(lái)一個(gè).git文件夾,這就表示本地git創(chuàng)建成功。右鍵Git Bash進(jìn)入git命令行,為了把本地的倉(cāng)庫(kù)傳到github,還需要配置ssh key。

3.配置Git

首先在本地創(chuàng)建ssh key;

ssh-keygen -t rsa -C "your_email@youremail.com"  

后面的your_email@youremail.com改為你的郵箱,之后會(huì)要求確認(rèn)路徑和輸入密碼,我們這使用默認(rèn)的一路回車就行。成功的話會(huì)在~/下生成.ssh文件夾,進(jìn)去,打開(kāi)id_rsa.pub,復(fù)制里面的key。
回到github,進(jìn)入Account Settings,左邊選擇SSH Keys,Add SSH Key,title隨便填,粘貼key。為了驗(yàn)證是否成功,在Git bash下輸入:

$ ssh -T git@github.com  

如果是第一次的會(huì)提示是否continue,輸入yes就會(huì)看到:You’ve successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github。
接下來(lái)我們要做的就是把本地倉(cāng)庫(kù)傳到github上去,在此之前還需要設(shè)置username和email,因?yàn)間ithub每次commit都會(huì)記錄他們。

$ git config --global user.name "your name"  
$ git config --global user.email "your_email@youremail.com" 

新建本地倉(cāng)庫(kù):
在想要存放倉(cāng)庫(kù)的根目錄下創(chuàng)建本地倉(cāng)庫(kù):

git init [倉(cāng)庫(kù)的名字]

或者:
新建一個(gè)存放.git(倉(cāng)庫(kù))的文件如(github目錄下面的firstday目錄):

git init //就會(huì)在firstday目錄下生成.git倉(cāng)庫(kù)文件

進(jìn)入要上傳的倉(cāng)庫(kù)(firstday文件),右鍵git bash,添加遠(yuǎn)程地址:

$ git remote add origin git@github.com:yourName/yourRepo.git  

后面的yourName和yourRepo表示你在github的用戶名 和 剛才新建的倉(cāng)庫(kù),加完之后進(jìn)入.git,打開(kāi)config,這里會(huì)多出一個(gè)remote “origin”內(nèi)容,這就是剛才添加的遠(yuǎn)程地址,也可以直接修改config來(lái)配置遠(yuǎn)程地址。
-----------------以上就是在git上配置本地倉(cāng)庫(kù)的全部步驟-----------------

4.提交、上傳

接下來(lái)在本地倉(cāng)庫(kù)里(firstday目錄下)添加一些文件,比如README文件,在原來(lái)的firstday目錄下Git Bash Here:

$ git touch README
$ git add README 
$ git commit -m "first commit"  

上傳到github:

$ git push -u origin master  (這里可能會(huì)有報(bào)錯(cuò):請(qǐng)查看git的報(bào)錯(cuò)以及解決方法)
如果這里報(bào)錯(cuò):

ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
說(shuō)明你的github上找不到helloworld的同名倉(cāng)庫(kù),需創(chuàng)建一個(gè)線上的倉(cāng)庫(kù)(上面有教程)
切記:如果我們?cè)趧?chuàng)建遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候添加了README和.ignore等文件(默認(rèn)在github上創(chuàng)建時(shí)自動(dòng)幫我們創(chuàng)建這兩個(gè)文件),我們?cè)诤竺骊P(guān)聯(lián)倉(cāng)庫(kù)后,(上傳push前)需要先執(zhí)行pull操作:
關(guān)聯(lián)倉(cāng)庫(kù)命令:$ git remote add origin git@github.com:yourName/yourRepo.git

pull命令:$ git pull -u origin master

再接著上面的操作:

$ git push -u origin master
(這時(shí)刷新你的github的helloworld倉(cāng)庫(kù)就會(huì)看到我們剛剛添加的README文件和 first commit的提交說(shuō)明了)
git push命令會(huì)將本地倉(cāng)庫(kù)推送到遠(yuǎn)程服務(wù)器。
git pull命令則相反。

-----------------以上就是Git本地倉(cāng)庫(kù)與Github遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián)的全部步驟-----------------

tips:

當(dāng)本地倉(cāng)庫(kù)的文件和線上文件都有修改的時(shí)候很容易起代碼沖突,問(wèn)題來(lái)了,就是要決解沖突,我在這里就簡(jiǎn)單的提一下:

在我們?cè)赗EADME文件中添加一句話"這是我的本地README文件”保存,

$git add README (添加到暫存區(qū))
$ git commit -m '添加了 這是我的本地README文件 這句話'

如果下面直接執(zhí)行$ git push origin master (在沒(méi)有修改遠(yuǎn)程github上的同名文件時(shí)是可提交的,但如果也有修改就要執(zhí)行下面pull操作再合并本地的代碼,否則就會(huì)報(bào)代碼沖突)
假設(shè)在github中的README文件中添加了一句話“這是我的github的README文件”保存,

首先我們先pull修改后git遠(yuǎn)程文件:

$git pull origin master

這時(shí)候在打開(kāi)本地的README文件應(yīng)該有我們線上和線下修改后的代碼,取舍其中需要的代碼如把它們合并為“這是我的github的README文件,這是我的本地README文件”,并保存。

$git add README (重新添加到暫存區(qū))
$ git commit -m '添加了 這是我的本地README文件' (重新提交)

最后push到遠(yuǎn)程倉(cāng)庫(kù)上

$ git push origin master

這時(shí)候刷新github頁(yè)面就能看到我們合并后的README文件了。
(修改完代碼后,使用git status可以查看文件的差別,使用git add 添加要commit的文件,也可以用git add -i來(lái)智能添加文件。)

花了2個(gè)晚上學(xué)習(xí)git,感謝這幾位的博主的文章讓我受益良多!
常用的git命令傳送門:http://www.songyawei.cn/?s=git
學(xué)習(xí)git圖文教程:http://www.itdecent.cn/p/dcbb8baa6e36
github入門:http://blog.csdn.net/hcbbt/article/details/11651229
代碼沖突:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000

git我還是新手,根據(jù)自己學(xué)習(xí)過(guò)程中遇到的問(wèn)題和大家分享,避免走這些彎路,如果文章有什么問(wèn)題還望您指出,我會(huì)虛心求教的(●'?'●)。希望我們共同進(jìn)步!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容