git與github使用教程詳解

git與github使用教程

在這裏插入圖片描述
在Windows上安裝Git
1.Git官網直接下載安裝程序,然後按默認選項安裝即可。
2. 安裝完成後,在開始菜單裏找到“Git”->“Git Bash”,出現一個類似命令行窗口的窗口,就說明Git安裝成功!
在這裏插入圖片描述
3.Git是分佈式版本控制系統,每個機器必須自報家門:名字和Email地址。這相當於給安裝在你自己電腦的是git起了一個名稱,因爲git每次commit都會依據名稱記錄信息。
$ git config --global user.name “Your Name”
$ git config --global user.email “Your Email”
在這裏插入圖片描述
創建版本庫
版本庫又名倉庫,英文名repository,可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
1.創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄:
$ mkdir test
$ cd test
$ pwd
在這裏插入圖片描述
2.通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init
在這裏插入圖片描述
瞬間Git就把倉庫建好了,並提示這是一個空的倉庫(empty Git repository),當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然就把Git倉庫給破壞了。
在這裏插入圖片描述
3.新建一個readme.txt文本:
$ vi readme.txt
在這裏插入圖片描述
增加內容,並保存:
Git is good system.
在這裏插入圖片描述
4.把文件添加到git倉庫暫存區:
$ git add readme.txt
在這裏插入圖片描述
5.把文件提交到git倉庫:
$ git commit -m “first time commit readme.txt”
在這裏插入圖片描述
git commit命令:-m後面輸入的是本次提交的說明,可以輸入任意內容,最好是有意義的,這樣你就能從歷史記錄裏方便地找到改動記錄。

git commit命令執行成功後會告訴你,1 file changed:1個文件被改動(我們新添加的readme.txt文件);2 insertions:插入了兩行內容(readme.txt有兩行內容)。

commit可以一次提交很多文件,所以你可以多次add不同的文件:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m “add 3 files.”

版本回退
1.增加內容,並保存:
Git is verry good system.
在這裏插入圖片描述
2.嘗試提交readme.txt文件:
$ git add readme.txt
$ git commit -m “second time commit readme.txt”
在這裏插入圖片描述
像這樣,你不斷對文件進行修改,然後不斷提交修改到版本庫裏,一旦你把文件改亂了,或者誤刪了文件,還可以從最近的一個commit恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。
3.在Git中,我們用git log命令查看提交歷史記錄:
在這裏插入圖片描述
git log命令顯示從最近到最遠的提交日誌,我們可以看到2次提交,最近的一次是second time commit readme.txt,上一次是first time commit readme.txt。

更多命令:

簡化查看log 提交日誌:
$ git log --pretty=oneline

退回版本:
在Git中,用HEAD表示當前版本,如上面最新的提交5ad0c06…,上一個版本就是HEAD ^,上上個版本就是HEAD ^ ^,當然往上100個版本寫100個 ^ 數不過來,所以寫成HEAD~100。

退回first time commit readme.txt版本
$ git reset --hard HEAD^
HEAD is now at 48ce08b add distributed

退回second time commit readme.txt版本
$ git reset --hard 5ad0c
HEAD is now at 5ad0c append GPL

查看Git命令記錄(長時間的記錄):
$ git reflog

查看Git狀態:
$ git status

丟棄工作區的修改:
git checkout – file //file爲需要丟棄修改的文件

把暫存區的修改撤銷掉:
git reset HEAD //file爲需要丟棄暫存區修改的文件

工作區和暫存區
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。
Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。
在這裏插入圖片描述
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。

git與github協作
現在已經在本地創建了一個Git倉庫後,又想在GitHub創建一個Git倉庫,並且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既可以作爲備份,又可以讓其他人通過該倉庫來協作。
(請先在https://github.com申請一個github賬號)

1.在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:
$ ssh-keygen -t rsa -C “[email protected]

你需要把郵件地址換成你github賬號下關聯的主郵件地址,如下圖,然後一路回車,使用默認值即可,由於這個Key也不是用於軍事目的,所以也無需設置密碼。
在這裏插入圖片描述
如果一切順利的話,可以在輸出提示目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
在這裏插入圖片描述
紅框就是id_rsa和id_rsa.pub兩個文件存儲路徑,可以到相應文件找到這兩個文件。
在這裏插入圖片描述
2.登陸GitHub,打開“Account settings”,“SSH Keys”頁面:
在這裏插入圖片描述
填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容,然後點“Add SSH Key”:
在這裏插入圖片描述
點擊“SSH and GPG keys”,你就應該看到已經添加的Key:
在這裏插入圖片描述
爲什麼GitHub需要SSH Key呢?因爲GitHub需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,所以,GitHub只要知道了你的公鑰,就可以確認只有你才能推送。

當然,GitHub允許你添加多個Key。假定你有若干電腦,你一會兒在公司提交,一會兒在家裏提交,只要把每臺電腦的Key都添加到GitHub,就可以在每臺電腦上往GitHub推送了。

最後友情提示,在GitHub上免費託管的Git倉庫,任何人都可以看到(但只有你自己才能改)。所以,不要把敏感信息放進去。

如果你不想讓別人看到Git庫,有兩個辦法,一個是交點保護費,讓GitHub把公開的倉庫變成私有的,這樣別人就看不見了(不可讀更不可寫)。另一個辦法是自己動手,搭一個Git服務器,因爲是你自己的Git服務器,所以別人也是看不見的。這個方法我們後面會講到的,相當簡單,公司內部開發必備。

確保你擁有一個GitHub賬號後,我們就即將開始遠程倉庫的學習。

3.github添加遠程庫
在這裏插入圖片描述
按上面順添加你的工程,請特別留意“注意”這裏:點擊選擇,就會在github工程裏默認添加一個readme.txt文件,後續想把git上的文件push到github前,要先用命令git clone更新一下本地git的文件,否則push會失敗。(建議在push前,用git clone命令更新本地git文件,以避免push出錯)
在這裏插入圖片描述
在GitHub上的這個test倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。

在本地git的test倉庫下運行命令:
$ git remote add origin https://github.com/mworkfun/test.git
在這裏插入圖片描述
注意:請把上面的mworkfun替換成你自己的GitHub賬戶名,否則,你在本地關聯的就是我的遠程庫,關聯沒有問題,但是你以後推送是推不上去的,因爲你的SSH Key公鑰不在我的賬戶列表中。

添加後,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

5.把本地庫的所有內容推送到遠程庫上:
在這裏插入圖片描述
把本地庫的內容推送到遠程,用git push命令,實際上是把當前分支master推送到遠程。

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

在push過程中如果出現以下提示框,請在上面輸入你的github賬號與密碼即可。
在這裏插入圖片描述
在這裏插入圖片描述

推送成功後,可以立刻在GitHub頁面中看到遠程庫的內容已經和本地一模一樣:
在這裏插入圖片描述
從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

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

備註:SSH警告

當你第一次使用Git的clone或者push命令連接GitHub時,會得到一個警告:

The authenticity of host ‘github.com (xx.xx.xx.xx)’ can’t be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

這是因爲Git使用SSH連接,而SSH連接在第一次驗證GitHub服務器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車即可。

Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了:

Warning: Permanently added ‘github.com’ (RSA) to the list of known hosts.

這個警告只會出現一次,後面的操作就不會有任何警告了。

4.遠程庫克隆
首先,登陸GitHub,創建一個新的倉庫,名字叫gitskills:
在這裏插入圖片描述
備註:如果不勾選Initialize this repository with a README,新建的就是一個空的遠程庫,執行clone命令得到的是空文件。

勾選Initialize this repository with a README,這樣GitHub會自動爲我們創建一個README.md文件。創建完畢後,可以看到README.md文件:
在這裏插入圖片描述
現在,遠程庫已經準備好了,下一步是用命令git clone克隆一個本地庫:
$ git clone https://github.com/mworkfun/test-clone.git
在這裏插入圖片描述
注意把Git庫的地址換成你自己的,然後進入test-clone目錄看看,已經有README.md文件了:
在這裏插入圖片描述
等待完善:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章