Git詳解和Github的使用

小荀彧發表於2021-03-13

Git和Github的概念:

  Git是分散式版本管理系統,簡單說就是一個軟體,用於記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的軟體。

  Github是一個為使用者提供Git服務的網站,簡單說就是一個可以放程式碼或檔案的地方,Github除了提供管理Git的web介面外,還提供訂閱,關注,討論組,線上編輯器等豐富功能。

 

Git的下載和Github賬號的註冊:

  1.Github的賬號註冊地址:https://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home

  2.Git的官方下載地址:https://git-scm.com/downloads     如果下載慢的可在:https://npm.taobao.org/mirrors/git-for-windows/下載(直接預設安裝即可),桌面右鍵檢視是否有 Git Bash Here和 Git GUI Here,則證明安裝成功 

 

Git的工作流程:

 

 

 

 

 

Git本地倉庫操作:

  1.首次使用需進行全域性配置:

    配置使用者名稱:git config --global user.name "使用者名稱";

    配置使用者郵箱:git config --global user.email "郵箱";(這裡使用Github的使用者名稱和郵箱)

  2.建立目錄命令:兩種建立方式:①mkdir 檔名 ②windows下右鍵建立資料夾

    

 

 

 

  3. ① cd flask_blog(進入專案目錄)

   ② git init 初始化

    進入目錄flask_blog,勾選隱藏的專案,即可顯示

 

 

 

 

    

 

 

     ③git status,查詢當前工作區所有檔案的狀態;

 

          

      nothing to commit (create/copy files and use "git add" to track)當前沒有進行任何提交,可以建立或者複製檔案,並使用"git add"命令進行跟蹤

 

 

    ④那麼我們當前應該新建檔案在所建立的flask_blog目錄下,然後 git add指令可將檔案新增到快取區

        提交的方式有三類:

          語法1:git add 檔名

          語法2:git add 檔案1 檔名2 檔名3....

          語法3:git add.   【新增當前目錄到快取區】

      

 

      這裡就使用git add readme.txt的方式新增到快取區

    ⑤提交過後,使用git status 檢視當前檔案狀態

 

      

 

     這裡提示我們可以利用git rm --cached <file>指令清除檔案,但我們不需要這樣做

    ⑥接下來可以利用:  git commit -m "註釋內容"   指令將快取區的檔案提交至版本庫

 

     

 

 

      ⑦下面我們可以進行版本回退的操作

    我再新建一個檔案提交到版本庫,檔名為index1.py

    重複上述操作 ⑴git add index1.py ⑵git commit -m "新建檔案index1.py"

    

 

 

     檢視版本命令:⑴ git log ⑵git log --pretty=oneline

 

    

 

 

     兩種方式不同的顯示日誌的方式,一般使用第二種,清晰明瞭。

    

 

 

      黃色部分為版本號,後面為註釋內容

   現在我們要回到第一個版本的狀態,使用命令: git reset --hard 版本號

 

     

 

 

      執行完畢後,本地倉庫變為

              

 

    ⑧如果我們需要回到有index1.py這個檔案時的狀態,可以進行下列操作:

    使用指令去檢視歷史操作:git reflog

     

 

 

      然後進行回到此狀態的操作:

     

 

 

     總結:a.要想回到過去,必須先得到 commit id (版本號),然後通過git reset --hard 進行回退;

        b.要想回到未來,需使用 git reflog 進行歷史操作檢視,得到最新的 commit id;

        c.在寫回退指令的時候 commit id 可以不用寫全,git 自動識別,但是也不能寫太少,至少需要寫前四位字元

 

 

 

Github遠端倉庫的建立:

    1.登入Github賬號

  2.點選Start a project

 

             

 

 

  3.①Responsitory name為倉庫名,必填

     ②Public網際網路上任何一個人都可以看到此庫,Private此庫只可以授權的才能提交,一般選擇Public,然後確認建立即可

   

 

 

 

Github遠端倉庫的使用:

 一.HTTPS協議

  1.遠端倉庫的克隆操作

  

 

    ①cd .. 返回到上一層目錄

    ②mkdir ./splider 建立目錄

    ③使用 git clone 克隆線上倉庫到本地

    語法:git clone 線上倉庫地址

       

 

     cd splider 進入splider目錄,進行克隆指令 ,這裡會出現一個警告warning: You appear to have cloned an empty repository,

     意思為你克隆了一個空倉庫,不用去管。

      

      克隆完成

        

      然後進入克隆好的 splider_clone,裡面存在一個".git"資料夾,如下:

        

 

    2.將工作區的內容提交到github遠端倉庫

     在倉庫上對應的操作 (提交到暫存區、提交到本地倉庫、提交到線上倉庫、拉取線上倉庫)

     ① 在splider_clone下建立 readme.txt檔案

     

 

 

       

       進入到splider_clone目錄下

          

 

      ③ 使用命令 git add readme.txt 提交到快取區,使用 git commit -m "新建檔案readme.txt" 將暫存區的檔案提交到本地倉庫中:

        

      ④ 使用命令 git push 將本地倉庫的檔案提交到線上倉庫,會彈出一個 Personal Access Token 視窗

        

          

 

 

         去Github獲取自己的Personal Access Token

          點選進入settings

          

 

 

           點選進入Developer settings

          

 

 

           點選進入 Personal access tokens

            

 

 

          點選進入  Generate new token

          

 

 

 

         輸入Github賬號密碼

        

 

 

         這裡填 Note,repo勾選即可:

              

 

 

          確認獲取

            

 

 

         這裡就是獲取到token

          

 

 

         填入即可, 點選 Sign in :

        

 

 

         成功提交到線上倉庫成功:

             

 

 

        檢查線上倉庫是否有readme.txt 檔案:

          

 

 

 

 

      3.拉取線上倉庫檔案操作  語法:git push

      我們先線上上倉庫建立檔案

       

 

 

         填上檔名和註釋

          

 

       建立

        

    

         

 

 

       git pull 拉取線上倉庫檔案到本地

          

 

           

 

           提醒:在每天工作的第一件事就是先 git pull 拉取線上最新的版本;每天下班前要做的是 git push,將原生程式碼提交到線上倉庫

     

  二、ssh協議

    *該方式與前面https方式相比,只是影響github對於使用者的身份鑑權方式,對於git的具體操作(如提交本地,新增註釋,提交遠端等操作)沒有任何影響  

 

    ①先安裝OpenSSH,下載地址:https://openssh.en.softonic.com

     ② 生成公私鑰對指令: ssh-keygen -t rsa -C "註冊郵箱"

        Enter file in which to save the key (/c/Users/cwg-member/.ssh/id_rsa)  這句話詢問我們把公私鑰對放在那裡,直接預設位置就行,敲回車

          

 

 

           叫我們公私鑰對保護密碼,如果不需要密碼直接回車就行

             

 

 

           連續回車,得到這個,

             

 

 

           去公私鑰對的儲存位置,用記事本開啟 id_rsa.pub 檔案,複製裡面的內容

 

             

 

 

             

 

 

       ③在Github上設定公鑰內容

        點選 SSH and GPG keys,進入New SSH key 進行設定

        

 

 

           

         把剛剛複製的公鑰內容複製到key裡面,標題自取,Add SSH key即可

          

 

         再次確認密碼即可

          

 

 

 Git 的分支操作:

  在版本回退的中,每次提交都會有記錄,Git把它們串成時間線,行程類似於時間軸的東西,這個時間軸就是一個分支,我們稱之 master 分支。

  在開發的時候往往是團隊協作,多人進行開發,因此光有一個分支是無法滿足多人同時開發的需求的,並且在分支上工作並不影響其他分支的正常使用,會更加安全。Git 鼓勵開發者使用分                支去完成一些開發任務。

   ①分支相關指令:

    檢視分支:git branch

    建立分支: git git branch 分支名

    切換分支: git checkout 分支名 

    刪除分支:git branch -d 分支名

    合併分支: git merge 被合併的分支名

    建立分支並切換到建立的分支: git checkout -b 分支名  (-b 表示建立並切換 相當於兩個操作指令)

 

    ②分支指令操作如下:

     檢視分支:

       

 

 

     建立分支並檢視分支:

       綠色字型表示當前所在分支

 

       

 

 

 

 

 

 

 

     切換分支:

      標紅部分表示切換成功,分支名改變

      

 

     合併分支:

 

        我們現在需要在devr分支下修改 readme.txt的檔案內容並提交到本地,如下

      

         然後我們進入到 master 分支,標紅表示分支切換回來了

      

 

 

       再去檢視readme.txt檔案發現並沒有我們修改過的檔案,說明這是在兩個不同的分支進行的操作:

 

          

 

 

       

 

 

         合併操作,將 devr 分支合併到master分支中

        

 

 

         再去檢視 master 分支下的 readme.txt的內容,說明合併成功

 

          

 

 

 

 

        刪除分支:

        因為devr分支裡面的檔案已經合併到master分支中去了,我們可以刪除devr分支,在用 git branch檢視分支,發現 devr分支已經被刪除

          

 

          注意:在刪除分支的時候,一定要先退出要刪除的分支

 

 

   ③合併所有分支之後,需要將 master 分支提交線上遠端倉庫,提交命令 git push 。

 

 

       

 

 

 Git 衝突的產生與解決:

   情景概述: 同事線上上倉庫修改了某個檔案,這個檔案是交給小明完成的,結果第二天小明來上班並不知道檔案已被修改,繼續在本地完善程式碼,到下班時,小明和平時一樣進行 git add 檔名    ,git commit -m "註釋",git push操作時,發現向線上倉庫提交時報錯了。圖中提示先 git pull操作,git pull操作後,此時git已經將線上與本地倉庫的衝突合併到了對應的檔案中。開啟衝突文                      件,解決衝突。解決方法:需要和同事進行商量,看程式碼如何保留,將改好的檔案再次提交即可。

   

    

 

 

     

 

 

     

 

 

 

 

 

 

 圖形化管理工具:

   ①Github for Desktop

 ②Source tree

 ③TortoiseGit

 ⑤Git GUI  

    

 忽略檔案操作:

  一、應用場景:如果不想提交某些檔案到線上倉庫中去,可以使用此操作。

  二、常見規則寫法:

    ① /mtk/  過濾整個資料夾

    ② *.zip    過濾所有.zip檔案

    ③ /mtk/do.js  過濾某個具體檔案

    ④ !index.php 不過濾具體某個檔案

  三、案例:

    ①先在本地倉庫中新建一個js目錄以及目錄中 js 檔案

      

 

 

     

  

      ②依次提交本地與線上

        

 

       新增 .gitignore 檔案,用指令 touch .gitgnore 建立

        

 

      ④ 編寫檔案中的規則(根據自己的需要編寫即可)

       /js/ 就是忽略掉js目錄

         

 

      ⑤ 然後再在js新建一個js檔案

        

 

      ⑥然後再進行提交

      

 

 

     ⑦去線上倉庫看,發現並沒有 m.js 檔案,說明此js目錄被忽略

      

 

                                                                  

部落格地址:https://www.cnblogs.com/gian-t87/p/14513056.html

作者:TUT

版權宣告:原創作品,謝絕轉載!否則將追究法律責任。

                                                                                     

 

       

      

      

       

 

 

         

 

 

 

    

    

 

 

    

 

 

 

   

 

 

  

  

  

   

相關文章