1. 程式人生 > >Git簡單使用與遠端倉庫(Github)的使用

Git簡單使用與遠端倉庫(Github)的使用

Git簡單使用與遠端倉庫(Github)的使用

1 前言

對於Git的使用,學習動機有兩點,第一是管理Github的時候比較麻煩,這點我做過兩次嘗試(桌面版Github以及Github的網頁級),這很令人不爽,滑鼠操作讓人窒息,而且上傳時速度比較捉急。第二是基於實際個人需求的,我在coding一些不大不小的東西的時候,總是想嘗試新增一些New Feature,每次的操作都是複製一個新的專案,但是隨著想法的增多,這容易帶來一些不確定的結果,資料夾多了,切換錯呀,不記得做了哪些改動呀。Git的時代就來了。一晚上看了下一些視訊和Git的官方的文件,記錄一下。
說一下總體感覺,視訊是在b站看的,感覺 一般,官方文件還是相當好,能快速找到自己需求的東西。推薦文件主要,視訊輔助。最有趣的還要數 L

i n u s Linus 大神和Git的那段趣事,這裡就不展開了。

2 Git 安裝

Linux、Windows、mac os 前往官方下載
安裝後配置環境變數:將安裝目錄"**\git\cmd"新增得到環境變數的path條目下

3 Git 使用

據我簡單的上手體驗,使用前需要思考三點

  1. Git 如何實現不同版本的管理,包括前進,回滾這兩個基本問題
  2. Git 如何管理多分支,其實就是多人如何管理多版本,一個很常見的例子,Android系統的開發,像穩定版,開發版,內測版這種東西。
  3. Git如何實現分散式,和集中式(SVN)有什麼區別,優劣體現在哪,主流的公司再用什麼?

3.1 start

  1. 首先註冊一個在版本管理中一個獨一無二的使用者

    git config --global user.name lishang6257
    git config --global user.email [email protected]
    
  2. 建立本地版本庫(repository)

    cd "指定路徑"
    git init
    
  3. 提交檔案

    git add "提交的檔案(相對目錄或者絕對目錄)"git commit  -m "提交說明:修改了...." 
    
  • 特別的git add * 是當前資料夾下的所有檔案
  • add 指令是將檔案先放在Stage(暫存區域),commit指令是將暫存區上傳到Repository(版本庫)中
  • git add -u 只提交更新的檔案

3.2 中場休息

在我們繼續下去的時候,我們需要先說一下基本原理和不得不說幾個命令。

3.2.1 基本原理

單純只說本地上的git管理而言,Git儲存在三個區域(工作區域,暫存區域,版本庫),Git的管理也就是三個區域的檔案以及指向三個區域的指標(head)的切換。這邊盜一張圖(圖片來源gaibian0823),基本的操作可以很好的解釋。
引用

3.2.2 重要的命令

  • git status
    這個是一個輔助性的指令,主要是看看你現在這個git庫是不是正常(是不是有檔案的異常增刪改)以及提供一些指導性意見,比如(要不要add,commit之類的)
  • git log
    為什麼要先說這個呢?每一個快照是以hash值作為唯一標識,這裡我們可以看到每一個歷史快照,也可以看到每個快照的更新說明,這樣就方便我們去尋找並快速的切換到該快照。
  • git reflog
    在我們日常使用時,可能會使用一些匿名的分支,然後切到其他分支時,就消失在版本的長河中了;或者說我們回退到歷史的快照中時,兩個快照的斷層就出現了;這個指令就是針對這些類似狀況的,可以檢視歷史記錄的版本號id
  • git diff
    這個指令也是為了幫助程式猿比較兩個快照(或者僅僅是快照中的幾個指定檔案)具體有什麼不同的,linux可以輔助用vim/vi在編輯,當年 L i n u s Linus 就是用diff工具(linux上的系統指令)去尋找不同開發者發給他Linux原始碼。

3.3 回退

到現在,已經簡單瞭解git是如何進行版本更新的,而且通過中場“休息”也知道回退到想要回退的版本號,那麼就繼續聊git的故事。

  • git reset
    在這裡插入圖片描述
    從這個幫助中可以看到reset命令主要是移動指標head用的,同時--hard是可以覆蓋工作區域的(所以使用時要小心),指標通常是指當前的分支,指標移動意味你在歷史記錄中的版本暢遊,自由的切換。

3.4分支

這個算是git的一個亮點,與集中式的版本控制相比,指標的移動,速度加快。【這一點博主不是很明確,需要進一步的學習】
在這裡插入圖片描述

  • git branch 分支名
    例如 git branch release
    主要用到-b(建立並切換到該分支)
    –list 顯示所有的分支名
    -m 重新命名分支
    其他博主的使用場景下並不是很常見
  • git checkout
    這個指令主要是在分支中來回切換,注意的是工作區域會隨著切換而改變。有一點值得說的是,在切換時會自動檢查下當前的git庫的狀態,不用為切換檔案沒儲存苦惱。

4 遠端庫的管理(github連動)

4.1 ssh上傳

首先就是將本機的ssh金鑰上傳到github上,注意是自已的郵箱

ssh-keygen -t rsa -C "[email protected]"

在這裡插入圖片描述
當前使用者下就可以看到這個金鑰和公鑰了
在這裡插入圖片描述
然後就是github個人設定中,找到ssh上傳入口,將公鑰上傳就那個*.pub的檔案
測試一下是不是能連上

ssh [email protected].com

4.2 遠端倉庫的建立

例如我在github建立了一個空的Repository,命名demo

git remote add pb https://github.com/lishang6257/demo

pb是本地對該遠端倉庫的命名

4.3 推送到遠端倉庫

git push pb master

這個pb就是遠端庫在本地的名字,master是推送到遠端庫哪個分支中

  • 特別的,當有多分支 git push pb local:remote ,local是指本地分支,remoter是指遠端分支,若遠端分支不存在時,會自動新建

4.4 從遠端庫抓取

就如剛才所見,從遠端倉庫中獲得資料,可以執行:

$ git fetch [remote-name] 這個命令會訪問遠端倉庫,從中拉取所有你還沒有的資料。
執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視。

如果你使用 clone 命令克隆了一個倉庫,命令會自動將其新增為遠端倉庫並預設以 “origin” 為簡寫。 所以,git fetch
origin 會抓取克隆(或上一次抓取)後新推送的所有工作。 必須注意 git fetch 命令會將資料拉取到你的本地倉庫 -
它並不會自動合併或修改你當前的工作。 當準備好時你必須手動將其合併入你的工作。

如果你有一個分支設定為跟蹤一個遠端分支(閱讀下一節與 Git 分支 瞭解更多資訊),可以使用 git pull
命令來自動的抓取然後合併遠端分支到當前分支。 這對你來說可能是一個更簡單或更舒服的工作流程;預設情況下,git clone
命令會自動設定本地 master 分支跟蹤克隆的遠端倉庫的 master 分支(或不管是什麼名字的預設分支)。 執行 git pull
通常會從最初克隆的伺服器上抓取資料並自動嘗試合併到當前所在的分支。

https://git-scm.com/book/zh/v2/Git-基礎-遠端倉庫的使用

4.5 刪除與重新命名

git remote rename pb paul
git remote

5 心得

git 利器不接受反駁,可以讓從程式碼管理中得到解脫,自然學習也是需要一些成本的,博主學習裡一整個晚上,目前基本可以應付自己的小專案的管理,上面的整理也是我在這幾天用的較多的或者個人認為比較重要的幾點。
不過文章中有幾點不足,還望諒解

  1. 對git的原理的理解比較膚淺,僅僅針對了實際應用場景,說的可能存在瑕疵
  2. 文章中圖片比較少,僅僅你指出了幾個關鍵步驟的,需要讀者自行實踐,如果有任何問題,留言區會在三四天內給出回覆
  3. 如果有什麼問題可以向博主反饋