1. 程式人生 > >GitHub安裝使用教程

GitHub安裝使用教程

  由於重複率比較大,為了尊重他人的成果,先在此註明本文是在學習了以下博文之後的一些總結歸納,並且說明了一些本人實際使用GitHub遇到的問題,並給出瞭解決辦法 。本人的作業系統是window10,所以只演示window系統下的GitHub安裝使用教程。

萱草林夏

戰爭熱誠

九師兄-樑川川
&mbsp;

1 GitHub概述

  GibHub的名字源於Git,Git是一個分散式版本控制系統,讓程式設計師團隊能夠協作開發專案,Git幫助大家管理為專案所做的工作,避免一個人所做的修改影響其他人所做的修改。你在專案中實現一個新功能的時候,Git將跟蹤你對每個檔案所做的修改。確定程式碼可行後,你將提交所做的修改,而Git將記錄專案最新的狀態,如果你犯了錯,想撤銷所做的修改,可輕鬆的返回以前的任何可行狀態。GitHub上的專案都儲存在倉庫中,後者包含與專案相關聯的一切:程式碼,專案參與者的資訊,問題和bug報告等


2 GitHub下載安裝

GitHub下載連結

Git的安裝步驟博文


3 GitHub使用教程

 

3.1 GitHub配置

  Git跟蹤誰修改了專案,哪怕參與專案開發的只有一個人。為此,Git需要知道你的使用者名稱和電子郵件。你必須提供使用者名稱,但可以使用虛構的電子郵件地址:

$ git config --global  user.name "Username"
$ git config --global  user.email "[email protected]"

  注意git config命令的--global引數,用了這個引數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址。
 

3.2 初始化倉庫

  開啟Git Bash命令列終端,跳轉到你想進行Git管理的專案目錄內,並通過git init命令把這個目錄變成Git可以管理的倉庫:

$ cd /F/Project/learnGit
$ git init
Initialized empty Git repository in F:/Project/learnGit/.git/

  瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。要是刪除這個東西,則丟棄專案的所有記錄。

  如果你沒有看到.git目錄,那是因為這個目錄預設是隱藏的,用ls -ah命令就可以看見。

 

3.3 檢查狀態

  在執行其他操作之前,先來看一下狀態(專案目錄內就一個main.c檔案):

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        main.c

nothing added to commit but untracked files present (use "git add" to track)

  在Git中,分支是專案的一個版本,從這裡的輸出我們可以知道,我們位於分支master。

  我們每次檢視專案的狀態時候,輸出的都是我們位於分支master上,接下里的輸出表明,我們將進行初始專案的提交,提交是專案在特定時間的快照。

  Git指出了專案中未被跟蹤的檔案main.c,因為我們還沒有告訴他要跟蹤那些檔案,接下里我們被告知沒有任何東西新增到當前提交裡面,但我們可能需要將為跟蹤的檔案加入倉庫

 

3.4 將檔案加入到倉庫

  執行git add --all命令,將需要上傳的全部內容放到快取區,再“檢查狀態”:

$ git add --all

。。。。。 MINGW64 ~/learnGit (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   main.c

  命令 git add ,將專案中未被跟蹤的檔案都加入到快取區,它不提交這些檔案,而只是讓git開始關注他們。然後檢查這個專案的狀態,發現git找到了需要提交的檔案的一些修改,標籤 new file 表示這些檔案是新加入的。

  在這一步,在執行git add --all命令後,可能出現“警告warning”:

warning: LF will be replaced by CRLF in xx.c.

  由於Linux中的換行符是LF,而Windows中的換行符是CRLF,如果想用Windows下的git管理來自Linux的文字檔案,git會預設將LF轉換成CRLF,併發出煩人的warning。解決辦法如下:

  使用cd命令進入目標倉庫的最上層目錄執行:

$ git config core.autocrlf false

  上述命令指示針對當前倉庫的配置,如果想要對本地的所有git倉庫都執行禁止自動轉換的命令,可以執行git config –global core.autocrlf false命令,但是這樣未免牽扯太大。


3.5 執行提交

  提交(commit)專案中已經被追蹤的檔案加入到倉庫中:

$ git commit -m "Started project"
[master (root-commit) 5d6ceca] Started project
 1 file changed, 1 insertion(+)
 create mode 100644 main.c

  簡單解釋一下git commit命令,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。“輸出”表明我們在分支master 上,而且有一個檔案被修改了


3.6 git push到遠端分支

  commit之後,還要將commit的程式碼push到遠端庫,但是首先要新增遠端庫,執行以下命令:

$ git remote add origin "https://github.com/confidentFeng/learnGit.git"

  請千萬注意,把上面的wangmingshun替換成你自己的GitHub賬戶名,否則,你在本地關聯的就是我的遠端庫,關聯沒有問題,但是你以後推送是推不上去的。另外遠端庫的名字就是origin,這是Git預設的叫法,也可以改成別的,但是origin這個名字一看就知道是遠端庫。

  下一步,就可以把本地庫的所有內容推送到遠端庫上,按照步驟會提示輸入使用者名稱和密碼:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (20/20), 2.17 KiB | 0 bytes/s, done.
Total 20 (delta 6), reused 0 (delta 0)
To https://github.com/wangmingshun/studygit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

  把本地庫的內容推送到遠端,用git push命令,實際上是把當前分支master推送到遠端。由於遠端庫是空的,我們第一次推送master分支時,加上了-u引數,git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

推送成功後,可以立刻在GitHub頁面中看到遠端庫的內容已經和本地一模一樣:

從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,現在,你就擁有了真正的分散式版本庫!


3.7 git push中遇到的問題以及解決方案

1.  fatal: The remote end hung up unexpectedly

在使用git推送專案時候出現 fatal: The remote end hung up unexpectedly,原因是推送的檔案太大。

解決方案1:

可以在.git目錄下面修改生成的config檔案增加如下:

[http]  
postBuffer = 524288000

也可以使用命令設定快取

$ git config http.postBuffer 524288000

解決方案2:

使用git更新或提交中途有時出現The remote end hung up unexpectedly的異常,特別是資源庫在國外的情況下。此問題可能由網路原因引起。

配置git的最低速度和最低速度時間:

$ git config --global http.lowSpeedLimit 0
$ git config --global http.lowSpeedTime 999999  單位 秒

--global配置對當前使用者生效,如果需要對所有使用者生效,則用--system

解決方案3:

fatal: The remote end hung up unexpectedly | 7.00 KiB/s

這句顯示 遠端結束掛起 |7kb/s

應該是牆的原因導致網速太慢,且專案有點大上傳不上

解決辦法:“FQ” 或者等等重新再push一遍,就沒問題了。

2. curl 56 OpenSSL SSL_read:SSL_ERROR_sysCALL

因為伺服器的SSL證書沒有經過第三方機構的簽署,所以才報錯。解決方案如下:
第一步,克隆遠端倉庫時,用env命令設定GIT_SSL_NO_VERIFY環境變數為”ture”。完整的命令如下:

$ env GIT_SSL_NO_VERIFY=true

第二步,在克隆完畢的倉庫中將http.sslVerify設定為”false”。完整的命令如下:

$ git config http.sslVerify "false"

點評:以上方法應該是Git處理可信任的SSL臨時證書很好的方法,第一步使用env命令保證了忽略證書錯誤是單次行為,不會成為預設的設定。第二次,則把忽略證書錯誤的設定限定在特定的倉庫,避免擴大該設定的適用範圍而引起的潛在安全風險。


4 總結

總結一下將專案上傳到GitHub的簡單步驟:

  1. 在GitHub上新建一個倉庫地址: http://github.com/......git

  2. 在需要上傳的資料夾目錄下,執行git init初始化git;

  3. 執行git add命令,將需要上傳的內容放到快取區;

  4. 執行git commit -m "上傳說明"將快取區的的內容放入到倉庫裡面;

  5. 執行git remote add origin http://github.com/......git,將倉庫與GitHub倉庫聯絡起來;

  6. 執行git push origin master將檔案提交到GitHub倉庫裡面,這樣就完成了資料夾的提交。