【初識Github】
Git是一個分布式的版本控制系統,最初由Linus Torvalds編寫,用作Linux內核代碼的管理。在推出后,Git在其它項目中也取得了很大成功,尤其是在Ruby社區中。目前,包括Rubinius和Merb在內的很多知名項目都使用了Git。Git同樣可以被諸如Capistrano和Vlad the Deployer這樣的部署工具所使用。同樣,eoe.cn客戶端的源碼也托管在github上。
GitHub可以托管各種git庫,并提供一個web界面,但與其它像 SourceForge或Google Code這樣的服務不同,GitHub的獨特賣點在于從另外一個項目進行分支的簡易性。為一個項目貢獻代碼非常簡單:首先點擊項目站點的“fork”的按鈕,然后將代碼檢出并將修改加入到剛才分出的代碼庫中,最后通過內建的“pull request”機制向項目負責人申請代碼合并。已經有人將GitHub稱為代碼玩家的MySpace。
在GitHub進行分支就像在Myspace(或Facebook…)進行交友一樣,在社會關系圖的節點中不斷的連線。
GitHub 使用 git 分布式版本控制系統,而 git 最初是 Linus Torvalds 為幫助Linux開發而創造的,它針對的是 Linux 平臺,因此 git 和 Windows 從來不是最好的朋友,因為它一點也不像 Windows。GitHub 發布了GitHub for Windows,為 Windows 平臺開發者提供了一個易于使用的 Git 圖形客戶端。
GitHub For Windows
GitHub for Windows 是一個 Metro 風格應用程序,集成了自包含版本的 Git,bash 命令行 shell,PowerShell 的 posh-git 擴展。GitHub 為 Windows 用戶提供了一個基本的圖形前端去處理大部分常用版本控制任務,可以創建版本庫,向本地版本庫遞交補丁,在本地和遠程版本庫之間同步。微軟也通過CodePlex向開發者提供 git 版本控制系統,而 GitHub 創造了一個更具有吸引力的 Windows 版本。
GitHub上已自動配置的Mac筆記本電腦,一個工具,可以轉換設置Linux或Windows機器。
BOXEN是GitHub的自動化工具,設置和配置的Mac筆記本電腦軟件開發[3]或其他類型的工作,正在使用他們的開發人員,律師,設計師,付貨人,等。我們的想法是準備系統以自動方式和作為無差錯盡可能用最少的干預工作。根據GitHub上,與一個新的開發機器上,他的Mac系統成立,并準備在30分鐘內提交代碼。
BOXEN的基礎上收集了大量的幾十個木偶模塊,使設置的各種軟件,如卡桑德拉,MongoDB中,Java軟件中,Python和Ruby開發中,節點,JS,nginx的,Skype公司,甚至MINECRAFT。雖然機器上配備了一個預配置,每個用戶都可以調整它的配置應有的作用。
【如何使用】
1.注冊賬戶以及創建倉庫
要想使用github第一步當然是注冊github賬號了。之后就可以創建倉庫了(免費用戶只能建公共倉庫),Create a New Repository,填好名稱后Create,之后會出現一些倉庫的配置信息,這也是一個git的簡單教程。
2.安裝客戶端msysgit
github是服務端,要想在自己電腦上使用git我們還需要一個git客戶端,我這里選用msysgit,這個只是提供了git的核心功能,而且是基于命令行的。如果想要圖形界面的話只要在msysgit的基礎上安裝TortoiseGit即可。
裝完msysgit后右鍵鼠標會多出一些選項來,在本地倉庫里右鍵選擇Git Init Here,會多出來一個.git文件夾,這就表示本地git創建成功。右鍵Git Bash進入git命令行,為了把本地的倉庫傳到github,還需要配置ssh key。
3.配置Git
首先在本地創建ssh key;
ssh-keygen -t rsa -C "your_email@youremail.com"
后面的your_email@youremail.com改為你的郵箱,之后會要求確認路徑和輸入密碼,我們這使用默認的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開id_rsa.pub,復制里面的key。
回到github,進入Account Settings,左邊選擇SSH Keys,Add SSH Key,title隨便填,粘貼key。為了驗證是否成功,在Git bash下輸入:
$ ssh -T git@github.com
如果是第一次的會提示是否continue,輸入yes就會看到:You’ve successfully authenticated, but GitHub does not provide shell access 。這就表示已成功連上github。
接下來我們要做的就是把本地倉庫傳到github上去,在此之前還需要設置username和email,因為github每次commit都會記錄他們。
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
新建本地倉庫:
在想要存放倉庫的根目錄下創建本地倉庫:
git init [倉庫的名字]
或者:
新建一個存放.git(倉庫)的文件如(github目錄下面的firstday目錄):
git init //就會在firstday目錄下生成.git倉庫文件
進入要上傳的倉庫(firstday文件),右鍵git bash,添加遠程地址:
$ git remote add origin git@github.com:yourName/yourRepo.git
后面的yourName和yourRepo表示你在github的用戶名 和 剛才新建的倉庫,加完之后進入.git,打開config,這里會多出一個remote “origin”內容,這就是剛才添加的遠程地址,也可以直接修改config來配置遠程地址。
-----------------以上就是在git上配置本地倉庫的全部步驟-----------------
4.提交、上傳
接下來在本地倉庫里(firstday目錄下)添加一些文件,比如README文件,在原來的firstday目錄下Git Bash Here:
$ git touch README
$ git add README
$ git commit -m "first commit"
上傳到github:
$ git push -u origin master (這里可能會有報錯:請查看git的報錯以及解決方法)
如果這里報錯:
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
說明你的github上找不到helloworld的同名倉庫,需創建一個線上的倉庫(上面有教程)
切記:如果我們在創建遠程倉庫的時候添加了README和.ignore等文件(默認在github上創建時自動幫我們創建這兩個文件),我們在后面關聯倉庫后,(上傳push前)需要先執行pull操作:
關聯倉庫命令:$ git remote add origin git@github.com:yourName/yourRepo.git
pull命令:$ git pull -u origin master
再接著上面的操作:
$ git push -u origin master
(這時刷新你的github的helloworld倉庫就會看到我們剛剛添加的README文件和 first commit的提交說明了)
git push命令會將本地倉庫推送到遠程服務器。
git pull命令則相反。
-----------------以上就是Git本地倉庫與Github遠程倉庫關聯的全部步驟-----------------
tips:
當本地倉庫的文件和線上文件都有修改的時候很容易起代碼沖突,問題來了,就是要決解沖突,我在這里就簡單的提一下:
在我們在README文件中添加一句話"這是我的本地README文件”保存,
$git add README (添加到暫存區)
$ git commit -m '添加了 這是我的本地README文件 這句話'
如果下面直接執行$ git push origin master (在沒有修改遠程github上的同名文件時是可提交的,但如果也有修改就要執行下面pull操作再合并本地的代碼,否則就會報代碼沖突)
假設在github中的README文件中添加了一句話“這是我的github的README文件”保存,
首先我們先pull修改后git遠程文件:
$git pull origin master
這時候在打開本地的README文件應該有我們線上和線下修改后的代碼,取舍其中需要的代碼如把它們合并為“這是我的github的README文件,這是我的本地README文件”,并保存。
$git add README (重新添加到暫存區)
$ git commit -m '添加了 這是我的本地README文件' (重新提交)
最后push到遠程倉庫上
$ git push origin master
這時候刷新github頁面就能看到我們合并后的README文件了。
(修改完代碼后,使用git status可以查看文件的差別,使用git add 添加要commit的文件,也可以用git add -i來智能添加文件。)
花了2個晚上學習git,感謝這幾位的博主的文章讓我受益良多!
常用的git命令傳送門:http://www.songyawei.cn/?s=git
學習git圖文教程:http://www.lxweimin.com/p/dcbb8baa6e36
github入門:http://blog.csdn.net/hcbbt/article/details/11651229
代碼沖突:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000
git我還是新手,根據自己學習過程中遇到的問題和大家分享,避免走這些彎路,如果文章有什么問題還望您指出,我會虛心求教的(●'?'●)。希望我們共同進步!