新手村導讀 - 5: Git(1)

閱讀時間約 4 分鐘

我想每個工程師應該或多或少都有版控的經驗,然而對於剛進這行的新手工程師們可能並未如此。(事實上,我剛進第一家公司時是沒有太多相關知識,然後就去乖乖啃書了)因此這篇就來介紹一下版控 & git 吧!第一篇會稍微介紹版控跟專案的內容,第二篇則會介紹基礎常用的指令,而第三篇會介紹一下我常用的其他指令喔。

版控

全名為版本控制,主要是控制哪些內容要留、哪些不用。在求學時期,由於頂多是一個小組、三四個人協作,因此彼此詢問一下、確認修改內容也是很方便的事情。不過在出了社會、跟多人協作的狀況下就並非如此了。當兩個人同時對相同檔案做修改時,如果單純地將整個檔案複製貼上,那就容易發生其中一個人的修改被覆蓋掉的情形,因此才需要有版控的機制。而現在主流的版控便是 git 了。

開發流程

比較講究流程或是比較大的公司裡,會有一套開發流程。在產品或功能開發出來後,會需要經過測試區測試,並且在上線出現問題時有緊急修復的流程等。現今的開發流程有許多都是來自 Git Flow 的改念去變形而成。詳細資訊我附在參考資料喔!

Webhook

要記得設定專案伺服器與 GitHhub(或是其他版控平台) 之間的 webhook,否則每次程式碼更新後,都會需要去該伺服器的專案底下去下指令 git pull,如此才會讓線上版本更新。還挺麻煩的。

git config

這個指令是用於設定在本地開發的 git 相關內容,包含你的帳號、 email 與遠端連結。

*查看目前的設定: git config --list

git remote

可以用這個指令做遠端的相關設定與修改。此外,可以用 git clone 直接將遠端內容整份抓取下來。

git blame

這個指令是萬惡的根源之一,他可以告訴你這個檔案或是這行內容上次是誰改的,讓你順利地去找人吵架

*查看特定行數: git blame -L 起始行數,結束行數 檔案名稱

Head

Head 代表目前檔案所在的版本位置。一般來說,我們會跟 Head 有關的操作應該只有切換分支的時候( git branchgit checkout),因此我們不太會對 Head 本身進行操作,會讓它保持在原本跟分支最新 Commit 點綁定的狀態,所以沒有特殊理由不會用到這區的指令。

*相對位置向上移動(^數量代表移動次數): git checkout 分支名稱^git checkout 分支名稱^^

*相對位置向上移動(~數字代表移動次數): git checkout 分支名~3

*也可以結合以上兩者,例如: git checkout HEAD~^2~2

Head、Branch 以及 Commit 點

最後,來跟大家解釋一下很常讓人誤會的內容: Head、branch 以及 commit 點。

Commit 點代表著一次提交,每個 Commit 點有一個自己的 Hash 值,而同一個 Commit 內容在不同分支上不是同一個 Hash 值!因此我們可以直接用 Hash 值去指定操作的分支以及位置。

Head 代表在目前分支上你所停留的位置,注意這並不代表你一定在最新的位置!舉例來說,目前的分支依序有 A、B、C 三個 Commit 點,一般我們會停留在 C 點接續開發,但有時我們會發現 C 的修改已不復使用,那我們可能會選擇回到 B 點去重新開發,而不是在 C 點開發並把修改的調整回去。

最後,在一般的 Git Graph 中,遠端 Branch 的位置通常是在該分支的最新 Commit 點,這是因為初始設定是 Head 與最新位置綁定在一起,因此當有人提交新的內容, Head 便自動往前移動。如果希望分離,那就需要額外下指令才行。

我在參考資料中有附上開源的 git 小遊戲(參考資料第六條),大家有興趣的話可以去做個練習喔~

參考資料:

  1. https://gitbook.tw/chapters/gitflow/why-need-git-flow
  2. [Git] 常用指令表 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
  3. https://gitbook.tw/chapters/config/user-config
  4. Git switch remote URLs. Git 更換遠端伺服器倉庫網址 · GitHub
  5. 【狀況題】等等,這行程式誰寫的? - 為你自己學 Git | 高見龍 (gitbook.tw)
  6. https://learngitbranching.js.org/?locale=zh_TW
avatar-img
2會員
24內容數
test
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
林柏宇的沙龍 的其他內容
網頁回應碼是指當網頁伺服器處理完一個請求後所回傳的狀態碼。這篇文章介紹了網頁回應碼的分類,包括1XX、2XX、3XX、4XX和5XX狀態碼,並解釋了各種狀態碼的意義和常見原因。
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
網頁回應碼是指當網頁伺服器處理完一個請求後所回傳的狀態碼。這篇文章介紹了網頁回應碼的分類,包括1XX、2XX、3XX、4XX和5XX狀態碼,並解釋了各種狀態碼的意義和常見原因。
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
版本控制 (Version Control), 是一種追蹤檔案被更改歷史的技術, 是團隊合作必備的工作實務[1]。 我在博士一二年級時期, 比較像是單打獨鬥, 與合作的學弟妹也是一對一溝通, 可以維持同步,把研究成果做出來。 然而,當我到博士三年級以後,
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(三) 什麼是 staging area? 在 Git 中,staging area是暫存區的意思,也被稱為索引(index)。透過一個git add 指令把檔案從工作目錄移至暫存區。再透過一個git commit 指令把暫存區的內容移至儲存庫。 當多人協作時你要開發個功能,但不
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇文章探討了工程師在如何有效提升自己,強調不僅僅是多coding,而是要對程式碼有更深層的理解。隨著職涯發展,工程師需要從單純的技術執行者轉變為團隊領導者,具備解決複雜問題和與他人有效溝通的能力。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
版本控制 (Version Control), 是一種追蹤檔案被更改歷史的技術, 是團隊合作必備的工作實務[1]。 我在博士一二年級時期, 比較像是單打獨鬥, 與合作的學弟妹也是一對一溝通, 可以維持同步,把研究成果做出來。 然而,當我到博士三年級以後,
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(三) 什麼是 staging area? 在 Git 中,staging area是暫存區的意思,也被稱為索引(index)。透過一個git add 指令把檔案從工作目錄移至暫存區。再透過一個git commit 指令把暫存區的內容移至儲存庫。 當多人協作時你要開發個功能,但不
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人