GitHub安裝使用教程
由於重複率比較大,為了尊重他人的成果,先在此註明本文是在學習了以下博文之後的一些總結歸納,並且說明了一些本人實際使用GitHub遇到的問題,並給出瞭解決辦法 。本人的作業系統是window10,所以只演示window系統下的GitHub安裝使用教程。
九師兄-樑川川
&mbsp;
1 GitHub概述
GibHub的名字源於Git,Git是一個分散式版本控制系統,讓程式設計師團隊能夠協作開發專案,Git幫助大家管理為專案所做的工作,避免一個人所做的修改影響其他人所做的修改。你在專案中實現一個新功能的時候,Git將跟蹤你對每個檔案所做的修改。確定程式碼可行後,你將提交所做的修改,而Git將記錄專案最新的狀態,如果你犯了錯,想撤銷所做的修改,可輕鬆的返回以前的任何可行狀態。GitHub上的專案都儲存在倉庫中,後者包含與專案相關聯的一切:程式碼,專案參與者的資訊,問題和bug報告等
2 GitHub下載安裝
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的簡單步驟:
在GitHub上新建一個倉庫地址:
http://github.com/......git
在需要上傳的資料夾目錄下,執行
git init
初始化git;執行
git add
命令,將需要上傳的內容放到快取區;執行
git commit -m "上傳說明"
將快取區的的內容放入到倉庫裡面;執行
git remote add origin http://github.com/......git
,將倉庫與GitHub倉庫聯絡起來;執行
git push origin master
將檔案提交到GitHub倉庫裡面,這樣就完成了資料夾的提交。