首頁 > 軟體

Git使用教學圖文詳解

2020-06-16 18:07:03

 

什麼是Git

Git是目前世界上最先進的分散式版本控制系統。最初由Linus Torvalds編寫,用作Linux核心程式碼的管理。如果你是windows使用者,看到這裡你可能會擔心“是不是只能用在linux上?或者Git對於windows不是那麼友好。” ,那麼我告訴你你的擔心是多餘的,GitHub 發布了GitHub for Windows,為 Windows 平台開發者提供了一個易於使用的 Git 圖形用戶端;微軟也通過CodePlex向開發者提供 git 版本控制系統。 

為什麼學習Git

除了你可以使用Git來管理自己的專案之外,還因為越來越多的人使用Github來託管自己的開源專案, 你可以找到適合你的開源專案進行學習,加入到一個團隊來提高自己。同時GitHub也可以幫助你找到滿意的工作!! 沒錯,可能有公司看到你託管到GitHub的專案而向你發出offer,在簡歷中 你的GitHub 可能成為加分項。 

安裝設定Git

1.msysgit是 Windows版的Git  點選下載   安裝完成後,點選開始選單—》Git資料夾—》Git Bash  開啟後 會出現下面的命令列表單, 證明你安裝成功了。

2. 設定你的名字與Email,你的名字與Email會出現在你的提交記錄中。

git config --global user.name "你的名字"
git config --global user.email "你的Email"

注意:git config使用--system引數時, Git 會讀寫/etc/gitconfig檔案,該檔案含有 對系統上所有使用者及他們所擁有的倉庫都生效的設定值

        git config使用--global引數時, Git 會讀寫~/.gitconfig檔案,該檔案含有只適用於該使用者的設定值

        git config使用--local引數時, Git 會讀寫 由使用者定義的各個庫中Git 目錄下的組態檔(.git/config),該檔案含有只適用於該Git庫的設定值    

 以上闡述的三層設定從一般到特殊層層推進,如果定義的值有衝突,以後面層中定義的為準,例如:在.git/config和/etc/gitconfig有衝突會採用.git/config值

你可以使用下面的命令來產看config的設定值

git config --list

3.在工作目錄中初始化新倉庫

倉庫,英文名repository,你可以簡單的理解一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改,刪除,Git都能跟蹤。

首先我們從命令列進入到倉庫的資料夾:

使用

git init

命令來將資料夾變成Git可以管理的倉庫。

這時倉庫目錄下多了一個.git的目錄(如果沒有,可能你的windows設定不顯示隱藏的檔案、資料夾,在資料夾選項中修改一下設定就好了。),這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。

我們也可以從現有倉庫克隆

git clone http://git.oschina.net/xxxxxx/xxxxxx.git

這裡使用的是 clone 而不是 checkout,Git 收取的是專案歷史的所有資料(每一個檔案的每一個版本),伺服器上有的資料克隆之後本地也都有了。實際上,即便伺服器的磁碟發生故障,用任何一個克隆出來的用戶端都可以重建伺服器上的倉庫,回到當初克隆時的狀態。

我們來clone 院子裡尋找和諧大大的PaPaPa專案:

我先fork了一下這個專案,獲取他的地址:

開始clone:

clone 完成,檢視一下倉庫的資料夾:

 

Git各種操作

Git新增檔案

在學習怎麼新增檔案之前我們先了解一下Git的工作流:

你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際檔案;第二個是 快取區(Index),它像個快取區域,臨時儲存你的改動;最後是 HEAD,指向你最近一次提交後的結果


首先使用git add命令將計劃的改動提交到快取區,
然後使用git commit -m 程式碼提交資訊"命令,將程式碼提交到HEAD,此時還沒有提交到伺服器,
執行git push origin master命令以將這些改動提交到伺服器,可以把 master 換成你想要推播的任何分支。

 下面我們來嘗試新增檔案 

1.在倉庫資料夾內我新建了個readme.txt

2.使用命令 git add readme.txt新增到快取區裡面去。

3.用命令 git commit -m 把檔案提交到HEAD。

4.使用 git status 檢查當前檔案狀態

Git提交修改

1.首先我們先修改一下 readme.txt

2. 我們使用 git status 檢視結果:

 上面的資訊告訴我們,readme.txt被修改過了,但還沒有準備提交的修改。

 3. 我們可以使用 git diff +檔名 ,檢視具體修改的內容。

 4.使用git commit 提交修改的檔案。

Git版本回退

 1.使用git log  查詢提交的歷史記錄

2.如果感覺顯示的資訊太多, 我們可以使用git log --pretty=oneline  命令

第一列一大串的字元為commit id ,是一個SHA1計算出來的一個非常大的數位,用十六進位制表示,第二列為我們提交時填寫的註釋。

3.這時我們回退到上個版本可以使用git reset  --hard HEAD^ 命令,回退上上個版本 git reset  --hard  HEAD^^ ,依次類推, 當我們回退100個版本時,可以寫成git reset  --hard HEAD~100  

可以看到 HEAD目前指向的是 commit id為9d3830c的版本。

4.我們已經回退了一個版本,我們可以復原這次的回退 當然可以,我們使用 git reset --hard +commit id 形式版本號(沒必要寫全,前幾位就可以了,Git會自動去找)。

可以看到 HEAD又重新指向了 commit id為4332ee4的版本。

Git刪除檔案與恢復檔案

1.我們可以使用 git rm+檔名 命令來刪除檔案

2.我們使用 git status 命令 產看目前倉庫狀態

可以看到deleted:顯示了 我們剛剛刪除的檔案,我們再看看倉庫的資料夾,發現readme.txt 也沒有了。

3.這時我們用git checkout命令來恢復剛剛刪除的檔案。

git checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

新增遠端倉庫

新增SSH Keys

SSH keys 是為了防止任何人隨意clone 或 push 程式碼而產生的.

SSH keys 有公匙和密匙,你在本地生成了密匙和公匙之後,把你的公匙告訴給伺服器或者其他共同作業者,那麼你就可以在他們的git版本庫clone和push程式碼等操作.相對於一台伺服器來說,一台共同作業者機器對應一個SSH keys.
1.首先使用 $ ssh-keygen -t rsa -C "你的郵箱" 
1.這裡是輸入你的SSH keys 儲存的位置,就是前面括號內的路徑。
2.輸入口令,可以直接回車。
3.再次輸入口令,可以直接回車。
開啟剛剛ssh keys 儲存的資料夾:
id_rsa 存放的就是私鑰 , id_rsa.pub存放的是公鑰,我們可以cat 路徑/id_rsa.pub檢視公鑰。 也可以用檔案管理器開啟檔案。
2.在github或者git@osc 新增你的公鑰

遠端倉庫

1.在git@osc新建倉庫

2.建立完成後新增後使用命令:$ git remote add origin git@git.oschina.net:你的使用者名稱/gitstudy.git

遠端庫的名字是origin,這是Git預設的叫法,也可以改成別的,但是origin這個名字一看就知道是遠端庫。

下一步,就可以把本地庫的所有內容推播到遠端庫上:

3.使用$ git push -u origin master把本地庫的所有內容推播到遠端庫上

小結

關於Git,本篇文章也沒講到分支,感興趣的同學先去看看廖雪峰老師的教學吧,這篇文章以後也會更新這部分內容,春節假期就這麼匆匆過去了,感覺也沒學到什麼,希望繼續努力。能堅持住寫部落格的習慣。

參考資料

1.廖雪峰老師的Git教學

2.Git使用簡易教學:http://www.bootcss.com/p/git-guide/

3.Pro Git(中文版):http://www.linuxidc.com/Linux/2013-05/85066.htm

GitHub 教學系列文章: 

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 伺服器搭建與用戶端安裝  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 


IT145.com E-mail:sddin#qq.com