【Git】版本控制基本指令

閱讀時間約 5 分鐘

前言

最近剛換新公司,重新準備自己的開發環境。以前被圖形化介面慣壞了,日常操作都是在Sourcetree介面上滑鼠點一點就可以完事,只有遇到特殊的狀況才會找指令解。

現在的公司用的是TortoiseGit,除了解衝突、看分支差異比對方便以外,我反而寧可回歸下指令。


本篇就記錄一下在Git Bash上的入門操作,加深理解對這套工具的認識。


何謂版本控制

編輯記錄

編輯記錄

以方格子來說,每一段時間系統會自動幫你的文章做存檔,避免編輯資料遺失,並且以時間戳記作為版本命名。因此,我隨時都可以回復到以前暫存時間點,再次接續進行編輯。


Git Repository

Repository有被翻譯為程式庫、倉庫、儲存庫,具體一點可以是電腦上的某個資料夾。我們可以透過git來追蹤控管這個資料夾內所有文件的變化,就如同方格子對這篇文章的編輯時間點作紀錄一樣。


首先,建立一個git-demo的資料夾作為repository,並且切換路徑位置到資料夾內。


注意這時候還只是一般的資料夾(目錄),裡面什麼都沒有


建立資料夾

建立資料夾

執行git init,讓git初始化該資料夾,變成repository。


git完成初始化的作業,產生預設的主分支(master),同時生成一個.git資料夾,裡面存放所有控管的資料參考。

raw-image


到這裡為止可以先歸納幾件事:

  1. git 是一項版本控制工具
  2. 初始化資料夾生成.git檔,用來追蹤文件變化,如果被刪除就會變回一般資料夾
  3. .開頭命名的檔案是隱藏檔,需要變更資料夾的顯示設定才能看到

Git Commit

每一筆commit(提交紀錄)可以理解為一次的存檔,作為範例我會新增一個檔案,並且把它紀錄下來。不過在這之前可以先使用git status查看當前狀態​。

沒有提交項目,系統也提醒作檔案異動後使用git add加入追蹤

沒有提交項目,系統也提醒作檔案異動後使用git add加入追蹤


建立檔案後,再查看一下git status -s,只看縮寫版的狀態。

系統提示file1.txt未被加入追蹤

系統提示file1.txt未被加入追蹤

執行git add .將所有檔案加入至暫存區。其中.代表當前資料夾,也可以各別指定加入的檔案名稱。

系統提示檔案加入至暫存區,等待提交

系統提示檔案加入至暫存區,等待提交


使用git commit提交本次所有的異動,描述一下這次改了哪些東西。沒有帶-m的指令會開啟編輯器。或者使用git commit -m "<提交訊息描述>"

編輯器預設使用vim,可以另外修改成自己習慣的編輯器
raw-image


完成提交後可以再查看一下狀態,確認沒有新的異動。

raw-image


Git Log

在眾多圖形化介面,最方便的就是可以看到美美的線圖,尤其是越大型的專案,亂七八糟的紀錄完全是門藝術。透過指令同樣可以做到簡易版的呈現,明確來說是照自己的意思只顯示必要的項目,例如git log --oneline --graph -5

以單行顯示歷程,提供線圖,只要最新5筆紀錄

以單行顯示歷程,提供線圖,只要最新5筆紀錄

Github

寫到這裡差不多要做結尾了,也許會有初學者問:github呢?


蠻意外的是,還真有不少人分不太清楚兩者間的關係,但在工作上一樣知道怎麼走完流程。有些公司用的是gitlab,一樣都是git開頭,難道不都是git嗎?


示意圖

示意圖

前面我們已經會在自己電腦建立git repository了,而且進行修改紀錄追蹤,直白一點說就是進行存檔。


今天如果需要多人協作,分別在不同的電腦一起編輯這個專案資料夾,就會需要在遠端的伺服器上也建立一個git repository,隨時與自己電腦的repository進行同步(push/pull),確保狀態的一致。


遠端伺服器常見的方案有Github、Gitlab、Bitbucket等等,除了可以在上面進行git相關功能操作外,額外多了權限控管、CI/CD流程等串接,因此跟純粹只有版本控制概念的git工具來說是兩回事。


總結

  1. 創建: git init
  2. 查狀態: git status
  3. 看歷程: git log
  4. 加入暫存: git add
  5. 提交暫存: git commit


後記

工作上從遠端的master clone下來整包專案的一周後,git status告訴我commit點落後400多項更新,於是照以往習慣定期同步遠端master。怪了,竟然連master 都可以pull失敗,究竟是發生了什麼事? 只好上stackoverflow找找可行的解法。


問題

執行git pull origin master

錯誤訊息

error: cannot lock ref 'refs/remotes/origin/xxx': ref xxx is at OOO expected XXX

解法

git gc --prune=now
git remote prune origin
git pull origin master


只知道遠端其實有很多沒砍掉的分支,大多數人處理方式也直接-f(--force)了事,因此才會需要下prune相關指令去更新這些分支的本地及遠端的ref,也算是學到了一課。


12會員
58內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
發表第一個留言支持創作者!
Err500 的其他內容
2024-04-26晚上跟到了在twitch上的直播,ThePrimeagen邀請到了Uncle Bob進行訪談—沒錯,就是那位《Clean Code》、《Clean Architecture》、《Clean Agile》等書的作者Robert C. Martin。
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
2024-04-26晚上跟到了在twitch上的直播,ThePrimeagen邀請到了Uncle Bob進行訪談—沒錯,就是那位《Clean Code》、《Clean Architecture》、《Clean Agile》等書的作者Robert C. Martin。
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
新手紀錄的 Git 學習筆記,將會隨著雷爆與淚水不定時更新
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
Thumbnail
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
前言   這篇文章將會以 SourceTree 作為媒介,講述 Git 中關於伺服器資料儲存狀態的介紹,並介紹如何建立分支與應用。 資料上傳 | Data Commit   版本控制最簡單的介紹,其實就是把專案的資料上傳雲端,然後進行不同版本的分類,當有需要抓回某一個功能進行展演或比對時,可以從這雲
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
Thumbnail
操作筆記、安裝git、下載github專案
Thumbnail
搞清楚 Git 與 GitHub 的差別並學會必會操作 什麼是 Git? Git 是一個軟體,可藉由它產生一個數據庫(repository),並且做到分散式版本控制。由於可在多處放置同一份程式碼、歷史紀錄追蹤與回朔,讓協同開發變得容易。(關於不同版本控制系統的介紹,請參閱 Git 官方教學文件)
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
新手紀錄的 Git 學習筆記,將會隨著雷爆與淚水不定時更新
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
Thumbnail
這篇文章將會講解 Git 專案上傳 GitHub 的流程。
Thumbnail
這篇文章將會介紹分支的合併,以及它常見的分類。
Thumbnail
前言   這篇文章將會以 SourceTree 作為媒介,講述 Git 中關於伺服器資料儲存狀態的介紹,並介紹如何建立分支與應用。 資料上傳 | Data Commit   版本控制最簡單的介紹,其實就是把專案的資料上傳雲端,然後進行不同版本的分類,當有需要抓回某一個功能進行展演或比對時,可以從這雲
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
Thumbnail
操作筆記、安裝git、下載github專案
Thumbnail
搞清楚 Git 與 GitHub 的差別並學會必會操作 什麼是 Git? Git 是一個軟體,可藉由它產生一個數據庫(repository),並且做到分散式版本控制。由於可在多處放置同一份程式碼、歷史紀錄追蹤與回朔,讓協同開發變得容易。(關於不同版本控制系統的介紹,請參閱 Git 官方教學文件)