Windows 上 Git 安裝與配置
-
下載安裝:訪問 Git 官方網站下載適用于 Windows 的安裝程序。運行安裝包時會出現許可協議、安裝目錄、組件選擇等界面(如下圖)。在“Select Components”頁面建議勾選 Git Bash Here 等選項,以便在資源管理器中右鍵快速啟動 Git Bash【69?】。
安裝完成后,可在「開始菜單」或桌面(如果勾選)找到 Git Bash。打開 Git Bash 后,輸入git --version
可驗證安裝是否成功。 -
配置全局用戶名和郵箱:安裝完成后,首先配置 Git 的身份信息,這些信息會記錄在每次提交中。在 Git Bash 中運行:
git config --global user.name "你的名字" git config --global user.email yourEmail@example.com
此命令會將用戶名和郵箱寫入
~/.gitconfig
(Windows 通常為C:\Users\用戶名\.gitconfig
)。以后新建的倉庫默認都會使用這個身份信息,除非為某個項目單獨重寫。 -
生成并配置 SSH 密鑰:為了安全地連接遠程倉庫(如 GitHub),推薦使用 SSH 認證。啟動 Git Bash,運行:
ssh-keygen -t rsa -b 4096 -C "你的郵箱"
按提示一路回車,新生成的密鑰文件默認位于
~/.ssh/id_rsa
(私鑰)和~/.ssh/id_rsa.pub
(公鑰)。然后運行ssh-agent
并添加私鑰:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
將公鑰內容復制到你的 GitHub 賬戶(GitHub 網站 → Settings → SSH keys)中,這樣就可以通過 SSH 方式訪問 GitHub 了。SSH 密鑰用于安全認證,使得 Git 可以在推送或拉取代碼時使用密鑰而非傳統密碼。
-
測試 SSH 連接:在 Git Bash 中運行:
ssh -T git@github.com
如果提示
Hi username! You've successfully authenticated...
表示已成功連接 GitHub。若出現錯誤,檢查密鑰是否正確添加,或是否通過ssh-add
加載了私鑰。
Git 基礎命令教程
Git 提供了一系列命令用于倉庫管理與日常開發。下面列出常用命令及其作用和示例:
-
git init
:在當前目錄初始化一個新的 Git 倉庫。如果想把一個已有項目納入版本控制,就在該項目根目錄下運行:git init
這會創建一個隱藏的
.git
文件夾,表示此目錄已被 Git 管理。 -
git clone <倉庫地址>
:從遠程倉庫復制(克隆)到本地新目錄。比如要獲取 GitHub 上的項目:git clone git@github.com:用戶名/倉庫名.git
克隆操作會在本地創建一個與遠程倉庫相同的副本,通常這是開發者獲取項目代碼的最常用方式。
-
git add <文件>
:將工作目錄中的修改添加到暫存區。比如添加當前目錄下所有文件:git add .
該命令會把指定文件的當前版本記錄到暫存區,等待提交到倉庫中。常用
.
表示所有文件,也可以指定具體文件或目錄。 -
git status
:查看工作目錄狀態,包括已修改、已暫存但未提交的文件等:git status
運行后會顯示哪些文件已被修改但未加入暫存區、哪些文件已暫存待提交等信息。通過
git status
可以確認當前倉庫狀態。 -
git commit -m "提交信息"
:將暫存區的內容作為一個新快照提交到倉庫歷史。git commit -m "實現了用戶登錄功能"
每次提交都會生成一個唯一的提交記錄,包含開發者信息、時間和提交說明。
git add
加git commit
構成了 Git 最基本的工作流。 -
git log
:查看提交歷史:git log
它列出倉庫中所有提交的歷史記錄,包括提交 ID、作者、日期和提交信息。可以加
--oneline
、--graph
等選項查看更簡潔或圖形化的日志。 -
git branch <分支名>
:創建新分支。git branch feature-x
該命令會創建一個名為
feature-x
的新分支,其實是開發一條并行的提交歷史線。然后可以運行git checkout feature-x
切換到該分支進行開發。使用分支可以實現并行開發,各分支之間相互隔離,不會干擾主干。 -
git merge <分支>
:將指定分支的修改合并到當前分支。假設在main
分支上執行:git merge feature-x
Git 會把
feature-x
分支的改動合并到main
分支中。合并是 Git 中的一個強大功能,用于將不同分支的開發成果整合在一起。合并后可能會出現沖突,需要手工解決(參見下文)。 -
git pull
:自動化地從遠程獲取并合并代碼。執行:git pull origin main
該命令會先從遠程倉庫(如
origin
)拉取指定分支(如main
)的更新,然后立即合并到當前分支,就像git fetch
加git merge
的簡寫。通常在開始工作前運行git pull
,確保本地與遠程同步。 -
git push
:將本地分支的提交推送到遠程倉庫。一般格式為:git push origin main
其中
origin
是遠程倉庫別名,main
是分支名。此操作會把本地main
分支的最新提交上傳到 GitHub 等遠程倉庫。通常首次推送還需要加上-u
參數,如git push -u origin main
,以將遠程分支設置為上游分支。 -
git stash
:暫存當前工作目錄未提交的修改,以便切換分支或臨時處理其他事務。使用方法:git stash
該命令會把所有未提交的改動(包括已暫存和未暫存的)都保存到一個棧中,并恢復工作目錄到干凈狀態。之后可以使用
git stash pop
恢復這些改動。這對中斷當前工作去處理其他緊急任務非常有用。
將本地項目上傳到 GitHub
-
在本地項目根目錄執行:
git init git add . git commit -m "首次提交"
這會把當前項目初始化成 Git 倉庫,并將所有文件提交為第一個版本。
-
在 GitHub 網站上新建一個空的倉庫(Repository),記錄下倉庫的 SSH 地址(如
git@github.com:用戶名/倉庫名.git
)。 -
本地添加遠程倉庫地址并推送:
git remote add origin git@github.com:用戶名/倉庫名.git git branch -M main # 將本地默認分支名改為 main(可選) git push -u origin main
git remote add origin <URL>
用于添加遠程倉庫別名origin
。git branch -M main
將當前分支重命名為main
(如果默認是master
)以與 GitHub 上的默認分支名一致。git push -u origin main
將本地的main
分支推送到遠程的main
分支。執行后,GitHub 上就會出現項目的文件列表。
-
此后每次更新代碼后,使用
git add
、git commit
提交,再運行git push origin main
將改動同步到 GitHub。第一次 push 后已經指定了上游分支,可以直接使用git push
。
企業級開發中的 Git 協作流程
-
功能分支工作流:團隊通常采用 Feature Branch(功能分支)工作流,即新功能在單獨的分支(如
feature/login
)上開發,完成后通過 Pull Request 合并到主干(main
)。這樣可以確保主干始終保持可運行狀態,同時多個開發者可以并行工作而互不干擾。下圖示意了一個典型的功能分支流程:開發者從主干或開發分支切出新分支,完成后合并回主干。 -
Gitflow 工作流:對于發布周期較長或版本管理嚴格的項目,可采用 Gitflow 分支模型。Gitflow 在
main
(發布)和develop
(開發)兩個長期分支基礎上,創建更多短期分支:每個功能新建feature/*
分支從develop
分出來,開發完成后合并回develop
;發布時從develop
分出release/*
分支進行最終測試,再合并到main
并打標簽;生產環境發現問題時從main
分出hotfix/*
分支修復后再合并回main
和develop
。Gitflow 明確了各類分支的職責,適合需要嚴格版本控制的大型項目。 -
多人協作與分支管理:在團隊協作時,應統一分支命名規范(如
feature/功能名
、bugfix/編號
等),并定期同步主干變更。每位開發者都從遠程倉庫克隆項目后創建本地分支進行開發。使用git pull
保持與主干一致,避免分支差異過大導致沖突。 -
代碼評審(Pull Request):大多數團隊通過 GitHub、GitLab 或 Bitbucket 等平臺發起 Pull Request(拉取請求) 來審查代碼。在 Pull Request 中,開發者可以邀請同事對自己的改動進行 review,討論并提出改進意見,再合并到主干。審核時可以查看改動的 diff、運行自動化測試狀態等,確保代碼質量。正如知名經驗所述,“Pull requests 提供了一種從同事那里請求代碼審查的方法,并檢查最近一次提交的構建狀態”。
-
沖突解決:合并分支時可能遇到 沖突,即不同分支在同一文件同一位置做了不同修改。Git 無法自動合并此類沖突,需要人工介入。通常的做法是打開沖突文件,手動編輯保留正確的代碼,刪除沖突標記,然后使用
git add
標記沖突已解決,再執行git commit
完成合并。在解決沖突前,也可以通過git merge --abort
放棄此次合并,或用git checkout --ours/--theirs <file>
臨時選擇某一方版本。及時與團隊成員溝通,避免頻繁沖突,盡量在合并前拉取最新代碼減少沖突發生幾率。
從 Windows 部署代碼到 Linux 服務器
在企業環境下,常需將代碼從開發機部署到遠程 Linux 服務器。常見方式包括使用 SSH 進行文件傳輸或直接在服務器上拉取代碼:
-
使用 SCP 復制文件:
scp
命令利用 SSH 協議安全地復制文件。例如在 Git Bash 或 PowerShell 中運行:scp -r C:\path\to\project user@server.example.com:/var/www/project
其中
-r
表示遞歸復制整個目錄。該命令會要求輸入服務器密碼,或使用已有的 SSH 密鑰免密碼登錄。SCP 適用于一次性快速復制整個項目目錄。 -
使用 Rsync 同步文件:
rsync
是一個高效的遠程同步工具,只傳輸改變的文件部分,適合頻繁更新時使用。例如:rsync -avz -e "ssh -p 22" /c/path/to/project/ user@server.example.com:/var/www/project/
選項中
-a
表示歸檔模式保留權限等,-v
顯示詳細過程,-z
啟用壓縮傳輸。-e
指定使用 ssh。rsync
僅傳輸修改過的內容,效率更高。在 Windows 上可以通過 Git Bash 或 WSL 安裝并使用rsync
。 -
在服務器上直接克隆/更新倉庫:如果服務器可以訪問 Git 代碼托管平臺,也可以在服務器上執行
git clone
或git pull
。例如:ssh user@server.example.com cd /var/www git clone git@github.com:用戶名/倉庫名.git # 之后如果需要更新,進入項目目錄運行: git pull origin main
這種方式需要服務器安裝好 Git,并確保服務器的 SSH 公鑰已被 GitHub 授權。優點是只傳輸代碼改動,不需要每次手工復制整個項目。
注意事項與提示:
- 在 Windows 上使用
scp
或rsync
時,需要在系統中安裝 OpenSSH(Windows 10/11 通常已內置),或使用 Git Bash 等工具。 - 傳輸前最好先確認服務器目標目錄存在并有正確權限。
- 在首次使用 Git 方式部署時,可能需要先配置服務器端的 SSH key 或運行
ssh-keygen
。 - 無論哪種方式,保持文件權限和依賴安裝一致很重要,可在服務器上用腳本處理部署后的編譯、重啟等操作。
參考資料:Git 官方文檔、Atlassian 和 GitHub 教程提供了豐富示例和說明。