Github使用教程

Git 工具區別

msysGit:純控制檯操做css

Git:可使用控制檯也可使用界面git

GitHub:可使用控制檯也可使用界面github

工做流

你的本地Repository git 維護的三棵組成。第一個是你的工做目錄(Working dir,就是本地磁盤,例如:E:\first;第二個是緩存區(Index,它像個緩存區域,臨時保存你的改動;最後是HEAD,是你要push Github 服務器的文件。windows

0瀏覽器

這幅圖以及文字描述是來自網址緩存

建立一個工程

在瀏覽器打開Github在上邊創建一個Repository:
服務器

01網絡

Repository 須要填寫的內容:app

02ssh

Repository 建立完成的大體效果:

03

建立Repository 成功以後,咱們就能夠進行git 的使用了。

第一種方法

進入本地磁盤

第一你須要進入一個working dir,我這裏將放置在E盤的根目錄,使用的指令爲:

1 #cd 就是進入這個目錄的意思
2 cd e: 

運行後的效果以下:

04

clone Repository

第二你須要將Guihub 中的Repository 下載到本地磁盤中,這裏是E盤,使用的指令爲:

1 # clone(下載)Github Repository到本地E:\first
2 #yourName:Github用戶名
3 Git clone https://github.com/yourName/first.git

運行的效果以下:

05

執行完後,E盤下就會多出一個first目錄(E:\first)默認這個目錄名稱和咱們Github上建立的項目名稱一致固然假如你但願撿出後的根目錄不想叫first,想叫second,執行命令:

1 #clone Repository 到E:\second
2 git clone https://github.com/yourName/first.git second

執行完成後,咱們就看到E盤下會新建一個second的目錄(E:\second)。

添加文件到Index

first根目錄下,新建一個1.txt文件(E:\first\1.txt),而後寫入一段文本:

1 Hello Github!

執行命令:

1 #將1.txt 提交到Index
2 git add 1.txt

運行的效果以下:

06

查看working dir Index 的不一樣

使用指令:

1 git status

能夠看到新增到Index中的文件1.txt,運行效果以下:

07

提交文件到Head

使用指令:

1 #提交Index 中的文件到Head 並添加備註「myfirst"
2 git commit –m 」myfirst」

運行的效果以下:

08

查看working dir Head 的不一樣

使用指令:

1 git status

比較的結果以下所示:

09

假設此時你在Working dirE:\first)中添加一個文件2.txt,再對比Working dir Head 中文件的差異結果以下:

10

文件推送到Github

使用指令:

 

1 #將Head 的文件push 到Github 服務器中
2 #master:是Repository的主分支
3 #每個新建的Repository 都有一個默認的master分支
4 git push origin master

顯示的結果以下:

11

查看Github 上的文件,以下所示:

12

到此第一種方法就完成了。

注意:完成以上步驟以後你就能夠向Github 服務器push 文件了,可是每次push 時都會要求你輸入密碼,若是你不想那麼麻煩,那麼你可使用指令:

1 #緩存你的帳戶信息,這樣就不須要每次都輸入帳號了
2 git config --global credential.helper wincred

Github 官網幫助文檔。運行的效果以下:

13

第二種方法

生成ssh key

首先咱們須要生成ssh key,使用指令:

1 #其中引號內是你的Github 登陸郵箱
2 ssh-keygen -t rsa -C "your_email@youremail.com" 

Key 的保存目錄不建議更改(Github 官網的建議)因此咱們通常是直接按三下Enter 鍵會生成如下的界面:

 

14

添加ssh keyGithub 賬戶

複製ssh key,使用指令:

1 #其中的「~」是系統默認的路徑
2 #個人電腦的路徑是C:\Users\Administrator。
3 clip < ~/.ssh/id_rsa.pub  

指令的運行效果以下所示:

15

沒有提示就表示已經成功了。你也能夠選擇到目錄C:\Users\Administrator\.ssh,這個目錄因電腦也不一樣,你能夠根據圖14的紅線畫出的目錄去找到(使用記事本打開),複製其中的全部內容。

在瀏覽器在登陸你的Github,進行設置,以下圖所示:

 

16

點擊SSH keys

 

17

點擊Add SSH key

18

輸入ssh key:

19

爲了確保一切工做,使用如下指令測試ssh key 是否工做:

1 #測試ssh key 是否工做
2 ssh –T git@github.com

若是在建立ssh key時設置了密碼,那麼這裏你會被要求輸入密碼(圖14的內容)。 我這裏並無設置密碼,輸入「yes」,出現紅線畫出的提示語句則說明你成功了。

運行的效果以下所示:

 

20

配置Git

這裏我將在使用e:\first 做爲Working dir,使用建立Repository 的指令:

1 #初始化一個本地Repository
2 git init

會產生一個隱藏文件夾.git

 

21

網絡上有許許多多的教程都使用到了如下的語句:

1 git config --global user.name 「your name」
2 git config –-global user.email 「your_email@youemail.com」

他們都沒有說明白爲何須要使用,Github 幫助文檔關於user.name,關於user.email。我這裏來個總結性的說明:這兩名的主要做用是告訴Github 對這個文檔進行修改的名字是什麼。

1.   沒有使用這兩條指令,那麼push Github 的用戶名將會是你的郵箱地址,應該是你在ssh key 中設置的郵箱地址

2.   若是你只設置了user.name那麼Github 將會使用你的用戶名做爲修改者的名字

3.   若是你只設置了user.email 那麼Github 會根據你提供的郵箱地址查找你在Github 上的用戶名修改者的名字,若是沒有查找到則使用你設置的user.name

4.   若是兩個都設置,將會優先根據你提供的郵箱地址查找你在Github 上的用戶名做爲修改者的名字,若是沒有查找到則使用你提供的user.name

這裏我只設置提交者的名稱:

 

22

由於這裏咱們並無clone Github 上的Repository 到本地Working dir,因此咱們須要將我本地的Repository 鏈接到遠程Github 服務器,使用以下指令:

1 #將我本地的Repository 鏈接到遠程Github 服務器
2 yourName:你Github 的用戶名
3 yourRepo.git:你Github 上的Repository
4 git remote add origin git@github.com:yourName/yourRepo.git

在其餘的博客中咱們常常會看到另一種鏈接的指令:

 
 
1 #將我本地的Repository 鏈接到遠程Github 服務器
2 yourName:你Github 的用戶名
3 yourRepo.git:你Github 上的Repository
4 git remote add origin https://github.com/yourName/yourRepo.git

那麼這兩個有什麼區別呢?第一個連接是基於HTTPS 形式的, 而第二個連接是基於SSH 形式的,Github 幫助文檔

這裏必須使用SSH 形式的,若是使用HTTPS 你照樣須要每次push 都須要輸入帳號與密碼。

運行的效果以下所示:

 

23

注意:若是你以前已經鏈接到了Github 服務器,那麼運行後會出現以下的錯誤:

 

24

此時有兩種的解決辦法,第一種方法:

 

25

接着你再鏈接就能獲得圖23 的效果。

第二種比較高端的做法(Guihub幫助文檔),運行指令:

1 #USERNAME:Github 用戶名   
2 #OTHERREPOSITORY:Github 上的Repository
3 git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git

運行的效果以下所示:

26

你能夠輸入指令:

1 #查看你如今鏈接的Github 服務器地址
2 git remote –v

運行的效果以下:

27

pullpush

因爲我使用的Github Repository 是已經添加過文件的(不是新建的),因此須要先將Github 上的文件下載到本地Repository,要否則是沒法將本地的文件push Github 的。若是你是新建的Repository 就能夠跳過這個過程。使用指令:

1 # 將master 分支中的文件下載到本地Repository 中
2 git pull origin master 

運行的效果以下:

28

爲了演示,我建立一個新的文件:2.txt,並添加內容「good learner」到文件中。使用指令:

1 # 建立一個文件2.txt
2 touch 2.txt
3 #輸入"good learner"到文件2.txt 中
4 echo ‘good learner’> 2.txt

運行的效果以下:

29

咱們須要先將文件提交到Head中,使用指令:

1 #提交文件到Index 
2 git add 2.txt
3 # 提交文件到Head並添加備註」first"
4 git commit -m 「first」

運行的效果以下所示:

30

如今咱們就能夠將內容push Github 服務器中了,使用指令:

1 git push origin master

運行的效果以下所示:

31

咱們再到Github 網站上去看看:

32

第二種方法到此結束了。

.gitignore 配置

.gitignore 就是告訴git 哪些文件不要被上傳,這是一個很重要而且很實用的文件。咱們創建一個工程每每會生成許多的配置文件以及中間文件,這些文件是不須要push 去服務器的,並且每每這些文件會很是的大。若是咱們更改了不少的文件,手動一個個添加的話也太麻煩了,咱們可使用指令:

1 #將全部的修改或者新建都添加到Index 中
2 git add –A

這時咱們就須要.gitignore了。

你能夠直接在Working dir(我這裏是E:\first),中建立文件.gitignore,接着手動在裏邊添加你要過濾的內容。

文件 .gitignore 的格式規範以下:

1.   全部空行或者以註釋符號 # 開頭的行都會被 Git 忽略。

2.   匹配模式最後跟反斜槓(/)說明要忽略的是目錄。
要忽略指定模式之外的文件或目錄,能夠在模式前加上驚歎號(!)取反。

3.   星號(*)匹配零個或多個任意字符;

4.   [abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);

5.   問號(?)只匹配一個任意字符;

6.   若是在方括號中使用短劃線分隔兩個字符,表示全部在這兩個字符範圍內的均可以匹配(好比 [0-9] 表示匹配全部 0 9 的數字)。

下面是例子:

 1 # cat .gitignore
 2     *.[oa]
 3 # 忽略全部 .a 結尾的文件
 4 *.a
 5  
 6 # 但 lib.a 除外
 7 !lib.a
 8  
 9 # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
10 /TODO
11  
12 # 忽略 build/ 目錄下的全部文件
13 build/
14  
15 # 會忽略 doc/notes.txt 但不包括 doc/server/notes.txt
16 doc/notes.txt

注意:有的時候會發現你添加在.gitignore 中的過濾條件不起做用了,好比我在.gitignore 中添加1.txt,但願不提交1.txt 文件,可是因爲以前我已經使用指令:

1 # 提交1.txt 到Index
2 git add 1.txt,

就是說文件已經被添加到Index 中了,因此它不會被過濾,也就是仍是會被push。咱們可使用指令:

1 # 將1.txt 移出Index
2 git rm --cached 1.txt 

這樣1.txt 就不會被push

推薦一個網站能夠自動生成 .gitignore 文件網址

2015-04-27   14:17:25

相關文章
相關標籤/搜索