掌握 Git 常用設定與指令讓你的程式開發更有效率
- Leo
- 技術宅 ( tech geek)
- 2023年9月22日
目錄
Git
是一款強大的開源版本控制工具,被廣泛用於追蹤程式碼的變更、創建和切換分支、合併程式碼,以及協同開發等。考慮到它的多功能性,我將我常用的 Git
指令和設定記錄下來,方便我日後查詢和使用。
Git 初始化與設定
初始化倉庫和設定使用者資訊。
# 設定使用者名稱
git config --global user.name "<username>"
# 設定使用者信箱
git config --global user.email "<email>"
# 倉庫初始化
git init -b main && git add . && git commit -m 'Initial commit'
Git 倉庫複製
從遠端數據庫複製倉庫到本地端。
# 從遠端數據庫複製整個倉庫到本地端數據庫
git clone <url>
# 從遠端數據庫複製整個倉庫到本地端數據庫,但只複製最新的一次提交
git clone <url> --depth 1
# 從遠端數據庫複製指定分支的最新一次提交到本地端數據庫
git clone <url> --depth 1 --branch <branchname>
Git 基本操作
基本的檔案添加和提交操作。
# 將所有檔案加入暫存區
git add .
# 將檔案加入暫存區
git add <filename>
# 提交暫存區的檔案到倉庫且允許空訊息
git commit --allow-empty-message -m "<message>"
修改歷史訊息
更改提交的訊息。
# 修改最後一次提交的 commit 訊息
git commit --amend -m "<message>"
# 修改最近 n 個 commit 的訊息
git rebase -i HEAD~<number>
遠端操作
與遠端數據庫相關的操作。
# 添加遠端數據庫
git remote add origin <url>
# 刪除遠端數據庫
git remote remove origin
# 修改遠端數據庫的連結
git remote set-url origin <url>
# 查看遠端數據庫
git remote -v
# 將本地端的分支推送到遠端數據庫
git push origin <branchname>
# 將本地端的分支推送到遠端數據庫,-u 參數會將本地端的分支與遠端數據庫的分支建立關聯
git push -u origin <branchname>
# 刪除遠端數據庫的分支
git push origin --delete <branchname>
# 從遠端數據庫拉取分支到本地端數據庫
git pull origin <branchname>
# 刪除本地端數據庫中已經不存在於遠端數據庫的分支
git fetch --prune
分支操作
分支的創建、切換和刪除。
# 建立分支,並切換到該分支
git checkout -b <branchname>
# 切換分支
git checkout <branchname>
# 刪除分支 (安全刪除)
git branch -d <branchname>
# 刪除分支 (強制刪除)
git branch -D <branchname>
# 修改分支名稱
git branch -m <oldbranch> <newbranch>
# 查看所有分支
git branch -a
# 將指定分支的 commit 合併到當前分支 (不會產生 merge commit)
git rebase <branchname>
# 將指定分支的 commit 合併到當前分支 (會產生 merge commit)
git merge <branchname>
暫存區操作
查看和操作暫存區的內容。
# 查看暫存區的狀態
git status
# 查看暫存區的差異
git diff
# 暫存當前的修改
git stash
# 查看暫存區的列表
git stash list
# 恢復暫存區的修改
git stash apply
# 刪除暫存區的修改
git stash drop
# 恢復暫存區的修改並刪除暫存區的修改
git stash pop
# 清除暫存區的所有修改
git stash clear
# 捨棄所有修改
git checkout -- . && git clean -df
壓縮與解壓縮
將分支的原始碼打包成檔案。
# 將指定分支的原始碼打包成 zip 檔
git archive --format zip --output <filename> <branchname>
# 將指定分支的原始碼打包成 tar.gz 檔
git archive --format tar.gz --output <filename> <branchname>
重新配置 .gitignore
當 .gitignore
設定未正常運作時,重新設定忽略規則。
# 從暫存區移除所有已追蹤的檔案
git rm -rf --cached .
# 將所有檔案添加到暫存區
git add .
# 將暫存區的檔案提交到倉庫
git commit -m "Reset .gitignore"
創建空的分支
創建一個沒有任何提交的新分支。
# 創建一個空的分支
git checkout --orphan <branchname>
# 從暫存區移除所有檔案
git rm -rf .
Git Submodule
管理子模組的添加、更新和移除。
新增與更新 Submodule
# 添加 submodule,並指定 submodule 的路徑
git submodule add <url> <path>
# 初始化 submodule,並將 submodule 更新到最新的 commit
git submodule update --init --recursive
# 更新 submodule,並將 submodule 更新到最新的 commit,並合併到當前分支
git submodule update --remote --merge
移除 Submodule
# 移除 submodule
git submodule deinit <path>
# 將 .gitmodules 添加到暫存區
git add .gitmodules
# 將 submodule 從暫存區移除
git rm --cached <path>
# 刪除 submodule 的 .git 資料夾
rm -rf .git/modules/<path>
# 提交訊息
git commit -m "Remove submodule"
# 刪除 submodule 的資料夾
rm -rf <path>
# 將本地的分支推送到遠端數據庫
git push origin <branchname>