Git在工作中的使用

tyrocoder發表於2019-08-19

一般流程

  1. 從遠端庫克隆專案到本地

    git clone https://XXXXX/XXX/XXX.git
    複製程式碼
  2. 切換到需要繼承的分支

    一般克隆下來的都是master分支,當然也可以直接在這個分支上建立新的本地分支,有些時候如果不是在master分支的下建立新的本地分支的話,就需要切換到需要繼承的分支下,假設我們需要切換到遠端分支origin/release/rt46,命令如下:

    git checkout release/rt46
    複製程式碼
  3. 建立新的本地分支並切換到該分支

    建立新的本地分支會在當前所在分支下進行建立,在建立後其內容會與當前分支內容一致,如果進行了第二布的話,那麼當前分支就是release/rt46,否則就為master。建立本地分支feature/addTools並切換到該分支:

    git checkout -b feature/addTools
    複製程式碼

    這條命令表示建立了分支feature/addTools並且切換當前本地工作臺到新的分支,相當於是執行了如下兩條命令:

    git branch feature/addTools  # 建立feature/addTools分支
    git checkout feature/addTools # 切換到feature/addTools分支
    複製程式碼
  4. 然後你就可以愉快的在本地分支feature/addTools裡面進行你的任務啦,假設到現在你的任務都已經完成了,那你需要執行後面的步驟

  5. 將所有的修改新增到索引裡面

    這裡說一下GIT裡的一些概念:工作區 - 索引 - 版本資料庫

    工作區指的是你當前所有能夠看到的專案內容,你可以假想為你的IDE能夠編輯的所有的工程檔案,那工作區就是這些工程檔案所在的專案目錄,所以可以直接理解為工作區就是含.git資料夾的專案工程目錄區域

    索引是儲存在.git裡的某個檔案,用來記錄修改的操作內容

    版本資料庫裡面儲存了各個版本,分支下的操作步驟,以及檔案操作的註釋等內容

    注意下,這裡的工作區,索引,版本資料庫都是指代你的本地環境,個人簡單理解的git具有分散式版本控制就是因為只要有人克隆了整個專案,那麼他也具有了整個『工作區-索引-版本資料庫』,所以相當於每個人本地都是一個git版本庫

    那為什麼需要說明這些概念,因為大家常用過兩個命令:git addgit commit -m '註釋內容'對吧,那其實他們的關係是這樣的:

    工作區 ----git add----索引----git commit----版本資料庫

    當我們在工作區對程式碼進行修改後先add到索引:

    git add .  # .符號表示將當前所有的修改全部新增到索引
    # 或
    git add filename.js # 這樣就表示只是將工作區做了修改的filename.js檔案新增到索引
    複製程式碼

    然後新增到版本資料庫

    git commit -m '修改了一些內容' # -m後面加上檔案修改的註釋內容
    複製程式碼

    git commit會講當前索引裡面的所有修改描述資料新增到版本資料庫裡面,如果對不同的檔案描述不同的話,建議多進行幾次add filenamecommit

  6. 將分支提交到遠端倉庫裡面

    我們之前的操作只是在本地建立了feature/addTools分支,如果需要提交到遠端倉庫上去,直接git push是不可行的

    git push --set-upstream origin feature/addTools
    複製程式碼

    這樣的話是在遠端倉庫建立了一個feature/addTools分支,以後就可以在這個分支下愉快的進行git push

  7. 更新繼承的分支內容,保證最新

    先別急著push,假設存在這種情況,你在release/rt46下新建了feature/addTools分支後,另一個同學他的任務寫完了合併到了release/rt46分支裡面,那此時的話,遠端倉庫上的release/rt46是有新增內容的,所以一般為了保證我繼承的release/rt46分支比較新的話,我們在push之前需要進行如下操作

    • 切換到父分支

      git checkout release/rt46
      複製程式碼
    • 把新的內容拉下來,拉下來後是最新的release/rt46了

      git pull
      複製程式碼
    • 切換到工作分支

      git checkout feature/addTools
      複製程式碼
    • 更新工作分支的父分支

      git rebase release/rt46
      複製程式碼
  8. 推送到遠端倉庫裡的feature/addTools分支下

    git push
    複製程式碼

常用git命令

  1. 切換分支

    切換分支需要注意看當前的工作區和索引是否有修改,如果有必須要先完成commit才可以切換

    git checkout <分支名>
    複製程式碼
  2. 刪除分支

    刪除本分支需要先切換到其他分支,才可以刪除本分支

    git branch -D <分支名>
    複製程式碼
  3. 合併分支

    假設當前分支是release/rt46,需要與feature/addTools合併

    git merge feature/addTools
    複製程式碼

    會將feature/addTools修改的內容合併到release/rt46裡面

  4. 檢視所有分支

    git branch -a
    複製程式碼

    可以通過grep通道限制顯示的內容

    git branch -a | grep release/rt4
    
    複製程式碼
  5. 新增遠端版本庫

    git remote add <remote> <url>
    
    複製程式碼

    remote指代遠端版本庫,一般預設遠端版本庫為origin

  6. 檢視提交歷史

    git log # 檢視所有提交歷史
    git log -p <file> # 檢視指定檔案的提交歷史
    
    複製程式碼
  7. 撤銷工作區所有未提交的檔案修改內容

    git reset --hard HEAD
    
    複製程式碼
  8. 撤銷指定的未提交檔案內容

    git checkout HEAD <file>
    
    複製程式碼
  9. 更新所有線上程式碼和分支

    git fetch
    
    複製程式碼