Git 學習

📢 本文由 gemini-3-flash-preview 翻譯

整理一下自己學的 Git 相關內容吧

一、安裝

  • 在 Windows 上安裝 Git

從 Git 官網下載安裝: https://git-scm.com/download/win

安裝完成後執行一次 Git Bash

  • 在 Linux 上安裝 Git

Debian:sudo apt-get install git

Fedora:dnf install git

CentOS:yum install git

其他參考: https://git-scm.com/download/linux

  • 在 Mac OS X 上安裝 Git

一是安裝 Homebrew,然後透過 Homebrew 安裝 Git,具體方法請參考 Homebrew 的文件: http://brew.sh/

二是直接從 AppStore 安裝 Xcode,Xcode 整合了 Git,不過預設沒有安裝,你需要執行 Xcode,選擇選單 Xcode - Preferences,在彈出式視窗中找到 Downloads,選擇 Command Line Tools,點擊 Install 就可以完成安裝了

Xcode 是 Apple 官方 IDE,功能非常強大,是開發 Mac 和 iOS App 的必選裝備,而且是免費的

二、設定

安裝完成後需要設定自己的身分資訊

1
2
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

其中 Your Name 替換為您的姓名,email@example 替換為您的信箱

三、建立版本庫 (儲存庫)

選擇一個資料夾,然後執行指令

1
git init

這樣該資料夾就成為可以被 Git 管理的儲存庫,請勿隨意修改 ./.git 目錄下的檔案 (通常這是隱藏檔),該目錄內容是 Git 用來追蹤管理版本庫的


或者也可以從 GitHub 上 Clone 儲存庫到本地

Clone 別人的儲存庫

如果不修改然後提交,使用 HTTPS 即可,例如

1
git clone https://github.com/yexca/typecho-theme-book.git

儲存庫連結可訪問 儲存庫所在網頁 ,點擊 Code 獲得

如果 Clone 下來後需要提交更改,需要儲存庫的擁有者將您的金鑰添加到儲存庫的 Deploy keys,此時可以使用 SSH Clone

1
git clone [email protected]:yexca/typecho-theme-book.git

不過一般修改提交的話還是先 Fork 一份修改,然後再透過 Pull requests 提交比較好

參考: 如何使用 GitHub 給大佬遞茶 - idealclover

如何在 GitHub 提交第一個 Pull Request

Clone 自己的儲存庫

先在個人的設定處添加 SSH 公鑰: SSH and GPG keys (github.com)

然後以上兩種方法皆可

四、檔案提交到本地儲存庫

經過一番操作後,多了幾個檔案,該提交到儲存庫了

將檔案添加到本地儲存庫

1
2
3
git add filename
# 或者下面是提交所有修改過的檔案
git add .

添加完成後該提交了

1
git commit -m "some details"

some details 處描述本次提交了什麼


那如果有些檔案我不想提交到儲存庫呢,也就是有些檔案可能不需要 Git 進行追蹤是否被修改

建立 .gitignore 檔案,然後把不想被 Git 管理的檔案名稱填入,一行一個即可

1
2
3
4
5
# .gitignore 檔案
test/    # 忽略 test 資料夾
test    # 忽略 test 檔案
*.py[cod]    # 忽略 *.pyc *.pyo *.pyd 檔案
!app.pyc    # 不忽略 app.pyc 檔案

忽略了也可以強制提交:git add -f test.pyc

也有一些現成的檔案可以參考: https://github.com/github/gitignore

如果在使用過程中需要再次修改檔案,需要先清除快取

1
2
3
4
5
6
# 清除快取
git rm -r --cached .
# 重新遍歷檔案
git add .
# 提交檔案
git commit -m "update .gitignore"

五、日誌與復原

使用 git status 可以查看儲存庫的狀態

使用 git diff 查看上次提交修改的內容

使用 git log 查看歷史記錄,即日誌,如果資訊太多可以加上 --pretty=oneline 參數,此時可以看到 commit ID

commit ID 後如果有 HEAD -> master 則說明此為最新提交,也就是當前版本。Git 使用 HEAD 表示當前版本,上一個版本就是 HEAD^,上上個版本是 HEAD^^,往上 60 個版本可以寫成 HEAD~60

退回到上一個版本 git reset --hard HEAD^

退回到指定版本:

1
2
3
4
git reset --hard commitID
# 例如 commit ID 為 eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0,可以寫如下:
git reset --hard eaadf4
# 只要寫前幾位並可以識別就行,沒必要寫全

如果您操作錯誤退回了,請不要關閉指令提示字元視窗,查看指令日誌:git reflog 找到剛才的版本號退回即可

六、本地儲存庫連結 GitHub

本地建立了一個儲存庫,想要上傳到 GitHub 的話,可以在 GitHub 上新建一個 repo,然後將本地儲存庫連結遠端儲存庫以上傳

1
git remote add origin [email protected]:[your repo]

如果是從遠端儲存庫 Clone 的則不需要連結


接著是在本地做了一些修改並提交,需要推送至遠端儲存庫

推送指令:git push origin master

指令為推送到遠端儲存庫的 master 分支

這裡需要注意的是使用 VS Code 建立的儲存庫預設分支為 master 而 GitHub 預設分支為 main,直接推送 git push origin main 會失敗,可以先修改本地分支名稱再推送

1
git branch -m master main

不過也可以修改預設建立的分支名稱為 main

1
git config --global init.defaultBranch main

另外,可以設定預設推送儲存庫為 origin 的 main 分支

1
git push --set-upstream origin main

這樣之後推送的時候直接使用

1
git push origin

即可


如果連結儲存庫時輸入錯了

首先查看遠端儲存庫資訊:git remote -v

然後刪除:git remote rm RepoName

一般遠端儲存庫名稱為 origin,所以刪除指令為 git remote rm origin

七、分支管理

Git 分支是 Git 中用來獨立開發不同功能、修復問題或實驗新想法的機制。透過分支,可以在不影響主分支的情況下自由地進行更改

列出所有分支:git branch

建立分支:git branch new_branch

切換到分支 1:git checkout new_branch

切換到分支 1:git switch new_branch

推送到分支:git push origin cheny

比如添加一個搜尋功能,首先將主分支提交完成後建立新分支

1
git switch -c search

上述指令表示建立並切換到分支 search

在新分支 search 修改並測試完成後提交

1
2
git add .
git commit -m "添加搜尋功能"

然後切換回主分支 main

1
git switch main

合併分支 search

1
git merge search

(可選) 刪除 search 分支

1
git branch -d search

八、建立伺服端

參考: 搭建 Git 伺服端及同步到指定目錄

九、其他

同時使用 GitLab 和 GitHub: document-library/Git-study.md at master · LiangJunrong/document-library (github.com)

參考文章

document-library/Git-study.md at master · LiangJunrong/document-library · GitHub

Git 教程 - 廖雪峰的官方網站 (liaoxuefeng.com)

如何連接本地倉庫與 GitHub 倉庫_joy_we1 的博客-CSDN 博客

如何使用 GitHub 給大佬遞茶 - idealclover

如何在 GitHub 提交第一個 Pull Request

將本地 master 分支代碼提交到遠端 main 分支

git 修改 .gitignore 後生效

This post is licensed under CC BY-NC-SA 4.0 by the author.
最後更新 2025-01-03 22:33 +0900