[教學]GitHub 基礎

由 andy 發表於 四月 15, 2011 / 1 則評論

官方介紹: Link ! 

GitHub is a web-based hosting service for software development projects that use the Git revision control system. It is written using Ruby on Rails by GitHub, Inc. (previously known as Logical Awesome) developers Chris Wanstrath, PJ Hyett, and Tom Preston-Werner. 


Github 是一個使用Git(版本控制軟體)管理軟體開發專案的一個網路服務,他是使用ROR寫的。Git和Github的關係 Git是一套版本控制軟體類似SVN或CVS 而Github則是一個網路服務。
 
流程:
1.註冊帳號
2.安裝Git
3.設定ssh key
4.建立repo與使用


註冊
進入官網後點選開始註冊


看是要免費還是付費帳號,免費的話所有專案都必須是公開的。





註冊成功後到Account Settings查看一下,稍候需要上傳ssh-public-key(id_rsa.pub)就是在左側的選單中

接著可以建立檔案庫。回到首頁點右邊建立檔案庫步驟如下列圖






建立完專案的檔案庫之後就可以開始設定主機的部份點了之後會針對您使用的系統導引至不同的教學



本篇先提供Mac 比較詳細的設定

下載 並安裝http://git-scm.com/
Note* Don’t worry that you don’t see an icon when it’s done. It’s not that kind of application.
官網貼心的提供一個提示這不是一個應用程式所以你不會看到任何ICON

下一步 產生ssh-key

這裡提供Mac所執行的相關指令 圖片的部份可以參考官網上的整個都很詳細步驟中要上傳ssh-key(id_rsa.pub) 就去Account Settings 那邊的左下點SSH-Public-Key 由於ssh-key是跟著主機的若要多台電腦使用可以都新增上傳。


Github官網提供很詳細的教學,就按著上面打。

 

下面提供Mac實作演示指令與註解:(紅色字體請自行替換為您的環境)

#設定相關資料 名稱和Mail僅用來關連 意思是如果你都照註冊資料打
#在Github網站專案後的那個作者會帶相關連結,若亂打就只有該名稱!

$ git config –global user.name "ZongYan"
$ git config –global user.email yan@wazzup.idv.tw # 注意這裡不用" "

#產生sshkey 記住ssh-keygen 連在一起 -keygen不是參數

$ ssh-keygen -t rsa -C "yan@wazzup.idv.tw"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/.ssh/id_rsa): 
/Users/.ssh/id_rsa already exists.
Overwrite (y/n)? y  #因為筆者已經建立過所以會出現此選項
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/.ssh/id_rsa.
Your public key has been saved in /Users/.ssh/id_rsa.pub.
The key fingerprint is:
ac:4c:29:e4:5f:a6:23:1e:45:d3:17:8b:32:26:a1:9a yan@wazzup.idv.tw
The key's randomart image is:
+–[ RSA 2048]—-+
|    .     .      |
|   . . . . o     |
|  . o * o o      |
| o o + * .       |
|E   o + S        |
|     * =         |
|    o *          |
|   . o .         |
|    .            |
+—————–+
#產生ssh-key之後請去網站貼上 

 

 



 

#跟著官網設定作一次 如果config設定過了可不用直接跳到git init
$ mkdir MyTest   #建立目錄 名稱請自訂
$ cd MyTeest    #切換到該目錄
$ git config –global user.name "ZongYan"
$ git config –global user.email yan@wazzup.idv.tw  # 注意這裡不用" "
$ git init
Initialized empty Git repository in /Users/Documents/Mytest/.git/
$ touch README
$ vi README #Git會比對內容所以增加一點文字吧
$ git add README 
$ git commit -m '對這次修改下註解但沒試過中文'

[master (root-commit) 96463b4] This is My First Test Project
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README
 
#常見錯誤示範
$ git remote add origin git@github.com:ZongYan/MyTest.git
$ git push -u origin master  
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
# 被denied但不是權限問題,也不能用sudo
$ sudo git push -u origin master  
Password:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
fatal: The remote end hung up unexpectedly

#常見的解決辦法
$ ssh-add ~/.ssh/id_rsa  #輸入
Identity added: /Users/.ssh/id_rsa (/Users/.ssh/id_rsa) #結果:加入成功


#如果Windows系統產生如下的錯誤
Could not open a connection to your authentication agent


$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa  #輸入


#產生之後記得把id_rsa.pub複製到網站帳號設定裡的ssh-public-key
#測試驗證sshkey是否是設定正確
$ ssh git@github.com
PTY allocation request failed on channel 0
Hi ZongYan! You've successfully authenticated, but GitHub does not provide shell access.
        Connection to github.com closed.
#看到以上訊息代表成功
#在Push一次成功
$ git push -u origin master

Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 426 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@github.com:ZongYan/MyTest.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

# 提交自己的修改
$ touch index.php
$ git add index.php 
$ git commit -m "Second Version Add index.php"
[master 5850420] Second Version Add index.php
 1 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 index.php
$ git push
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 323 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:ZongYan/MyTest.git
   145123e..5850420  master -> master


# 先在網站上對Public專案Fork取得連結 直接複製到本機
$ git clone git@github.com:AndyYou/Spoon-Knife.git
Cloning into Spoon-Knife…
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 17 (delta 3), reused 13 (delta 1)
Receiving objects: 100% (17/17), 73.17 KiB | 85 KiB/s, done.
Resolving deltas: 100% (3/3), done.

 

 






為了日後使用方便紀錄常用指令


git init #開啓新專案,到欲存目錄下 專案初始化
git add [filename]   #修改完成,概念上有點類似先宣告要加入哪些檔案並非正式上傳
git add.  #所有檔案
git commit -m '對於這次更新的註解'   #下註解
git push  #
正式上傳

 

#當你多台電腦需要複製或抓別人的檔案
git clone git@github.com:[UserName]/[ProjectName].git
git pull  #
下載線上較新的版本(變更的部份複製並merge)

參考文章

http://help.github.com/
http://billy3321.blogspot.com/2009/02/github-howto.html
Windows還有GUI
http://nathanj.github.com/gitguide/creating.html

 

相關文章
Git 新增檔案 git add . # 將資料先暫存到 staging area, add 之後再新增的資料, 於此次 commit 不會含在裡面. git add filename git add modify-file # 修改過的檔案, 也要 add. (不然 commit 要加上 -a 的參數) git add -u # 只加修改過的檔案, ...
繼續閱讀
介紹github一些相關指令

關於作者

喜愛閱讀心理學與程式,資訊技術相關書籍,電影偏愛血淋淋,需要動腦的懸疑解謎,災難科幻類型.平時運動:游泳,慢跑等...最愛的一句話: Divide and Conquer! 無法掌握現在,如何談及未來!目前職業是程式設計師.

評論

  1. Nelda Lavalley 說: 2011/05/29

    Keep posting stuff like this i really like it

發表評論

*