Skip to content

下載 PDF

淺談Git分佈式版本控制

圖片地址失效

Git 介紹

Git是一種分佈式版本控制系統,強大的地方在於可以靈活的分支跟合併功能,開發者的本地端及遠端都有一個完整的版本庫(Repository)。 可以回朔歷史或是在分支開發測試功能,在不污染主線 (1) 的同時測試功能。Git目前是最流行且強大的版本控制系統

  1. 主線 origin/main 通常指已上線版,當主線需要新增功能時,通常會先在支線測試,等確認沒問題才會部署至主線上

優點

  • 分佈式架構:每個開發者的工作站上都有一個完整的版本庫,這使得開發者可以在離線或網絡連接不佳的情況下工作。
  • 強大的分支和合併功能:Git 提供了一種簡單而強大的方式來創建和合併分支。這使得開發者可以在不同的分支上進行平行的開發工作,並輕鬆地將他們的更改合併到一起。

缺點

Warning

某些Git指令是能夠強制執行或覆蓋,可能會導致遠端的歷史被改寫 (1)

  1. Danger

    git push --force 是一個 Git 命令
    用於強制將本地的更改推送到遠端倉庫
    即使這會導致遠端倉庫的歷史被重寫
    

指令介紹

圖片地址失效

git常用指令
git clone                 # (1)!
git pull
git add   
git commit -m "描述" 
git push 
git merge             
  1. Note

    Clone :將整個專案從遠端複製至本機 通常是第一次參與專案時才會使用
    Pull :將專案最新的更改合併到本機端 (1)
    Add :在本地端更改的檔案暫存後準備提交 (2)
    Commit :將暫存的更改提交到本地端當前的分支 搭配 -m "輸入提交時顯示的訊息"
    Push :將本地端推送到遠端
    Merge :將兩個或多個分支合併
    1. Note

      除了第一次使用Clone 後面都使用Pull 如果專案很大很肥的話用Clone效率不高
    2. Note

      一個一個將檔案暫存可以更精確控制哪些檔案要暫存
      
      更快捷的將當前資料夾及其子資料夾添加到暫存
      

Note

git clone
將整個專案從遠端複製至本機 通常是第一次參與專案時才會使用

git pull
將專案最新的更改合併到本機端 (1)

git add 
在本地端更改的檔案暫存後準備提交

git commit
將暫存的更改提交到本地端當前的分支 搭配 -m "輸入提交時顯示的訊息"

git push
本地端推送到遠端

git merge
將兩個或多個分支合併

git push  git push origin main 兩個命令的主要差別在於它們推送變更到的遠程分支

git push這個命令會將當前分支的變更推送到設定為跟蹤的遠程分支如果當前分支沒有設定跟蹤的遠程分支則會根據 Git  push.default 配置來決定要推送到哪個遠程分支

git push origin main這個命令會將變更推送到 origin 遠程的 main 分支不論當前分支是什麼origin 通常是你的遠程存儲庫的默認名稱main 是一個常見的主分支名稱

總的來說如果你想要將變更推送到特定的遠程分支你應該使用 git push <remote> <branch> 命令如果你只是想要將變更推送到當前分支的跟蹤分支你可以使用 git push 命令

checkout -b user1_test
建立 user1_test 分支並進入該分支
Switched to a new branch 'user1_test'
git add docs/gitset.md    
將docs/gitset.md 暫存

git commit -m "test1merge requesr"
commit

git push origin user1_test
myenv) zoxul@zoxuldeMacBook-Pro markdown % git log
commit 0a0b87d92c149d444cf79be8664861083db29962 (HEAD -> user1_test, origin/user1_test)
Author: zoxulgit <zoxulyoshino@gmail.com>
Date:   Mon Mar 25 14:58:22 2024 +0800

    test1merge requesr

commit 18f3eda54696ca6ae1345434922bb4c56d2ccb3b (origin/main, main)
Author: zoxulgit <zoxulyoshino@gmail.com>
:
git log

目前在

git branch

(myenv) zoxul@zoxuldeMacBook-Pro markdown % git branch
  main
* user1_test
(myenv) zoxul@zoxuldeMacBook-Pro markdown % 

查看當前分支名稱: git rev-parse --abbrev-ref HEAD

(myenv) zoxul@zoxuldeMacBook-Pro markdown % git rev-parse --abbrev-ref HEAD
user1_test

修改最近一次提交的內容(訊息)

git commit --amend

請注意,因為 git commit --amend 命令會創建一個新的提交並替換掉原來的提交,所以它會改變你的提交歷史。
list trace file
git ls-files
untrace file
git rm --cached file.txt
本地分支推送到遠端不同名分支
git push origin develop:fixbug
git 好用的
pip install mkdocs-get-deps==0.2.0
pip install pipdeptree==2.20.0
pip install package_name
查看特定檔案的修改歷史
git log -p -- mkdocs.yml

test merge user1