新手村導讀 - 6: Git(2)

新手村導讀 - 6: Git(2)

更新於 發佈於 閱讀時間約 4 分鐘

事不宜遲,接續上次的內容,這次介紹基礎的指令吧!

git pull

最基礎的指令之一,用於將遠端伺服器的內容抓下來,更新本地的內容。

*因為是拉下來再更新,因此有可能需要解衝突。

*大部分情況下, git pull = git fetch + git merge

git push

最基礎的指令之一,用於本地的內容推上遠端伺服器去更新內容。如果你推的內容跟遠端的有衝突,會跑出 error 不讓你繼續進行下去,此時可以考慮 rebase 或是搭配 -f 指令去強推分支。然後, -f 指令請慎用,因為遠端的內容會直接被覆蓋要,而且無法復原!

*完整指令: git push origin 本地分支:遠端分支 (-f)

*刪除遠端分支: git push origin :遠端分支

git merge

最基礎的指令之一,用於合併分支內容。

git fetch

這個指令會把遠端的所有分支儲存在本地,但不會進行更新。可以搭配 source 參數去銜接本地與遠端的不同分支的內容。

*儲存特定分支: git fetch origin 遠端分支

*將(遠端)分支1拉下來後,銜接(本地)分支2: git fetch origin 分支1:分支2

git branch

這個指令可以處理跟分支有關的操作,例如查詢分支、刪除分支、新建立分支等等。

*查詢分支: git branch

*當前位置新建分支: git branch 新分支名稱

*在指定位置開分支: git branch 新分支名稱 HEAD~^2~git branch 新分支名稱 Hash值

*刪除分支(不能刪除目前自己所在的分支): git branch -D 分支名稱

*強制將分支指向特定位置: git branch -f 分支 分支或Hash值

git checkout

這個指令主要用來切換分支。 git checkout 分支名稱

git rebase & git cherry-pick

基本概念是,rebase 是將 Commit 點到別的分支上,而 cherry-pick 則是將別人的 Commit 點撿來目前所在的分支進行使用。

*將分支2搬家到分支1後面: git rebase 分支1 分支2

*撿點(會直接加在目前的位置後面): git cherry-pick (Hash1) (Hash2) …

git reset & git revert

這兩個指令都是退回 Commit 點的指令。

reset 會直接退回之前的 Commit 點,而 revert 則是將內容退回指定的 Commit 點內容,但是會有新的 Commit 點

另外一個重點是,revert 只會在你目前所在的分支(以及原始拉出來的分支)生效,在其他分支上即使 hash 值相同,git revert 的效果仍不會顯現!

舉例來說:

現在 A 分支(含有 A0 這個點)合併進入 B、C 兩個分支,那麼 B、C 上面都會有 A0 這個點(同樣內容不同 Hash 值)。當我今天想在這兩個分支上都退掉 A0 時,

  1. 先從 B 拉出新的分支 B1, git revert ,併回 B 分支,這樣 B 就會有 revert 的效果。
  2. 但是要注意的事情是,現在即使將 B1 併回 C 分支也不會有效果!
  3. 因此我們需要額外從 C 拉出 C1 分支後再做一遍,最終併回 C 分支,這樣才能完美完成退版~

git tag

這個指令是在特定 Commit 設立標籤,功能簡單,指令也很簡單 git tag 標籤名稱 Hash值 ,不過實作上依舊蠻常用到的。

對於開發者本身的意義:

  1. 代表重大更新里程碑
  2. 打完標籤後就無法再對這個 Commit 點進行 git 相關的操作,可以避免有人亂動內容。

對於使用者來說:

  1. 可以快速看到自己需要哪個版本的內容
  2. 在程式內引用時可以直接指定版號,避免某天突然套件更新導致程式出現致命性錯誤。

git describe

這個指令跟標籤也有關係,主要是用於尋找特定 Commit點往前最近的標籤,畢竟實作上有時已經先鎖定需要哪部分修改內容了,但是反而找不太到版號,此時這個指令就可以派上用場啦~

Git 進度條終於跑完 2/3 了,當我開始整理筆記後才發現之前真的記錄了很多 OAO

參考資料:

  1. 經驗甘苦談
  2. Day24|【Git】認識 git tag 標籤常用指令、標籤與分支的差異 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
avatar-img
林柏宇的沙龍
2會員
41內容數
test
留言
avatar-img
留言分享你的想法!
林柏宇的沙龍 的其他內容
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。