講講git 和svn
- 目錄
- Git到底是什么?它該怎末用?
- 核心概念
- 基礎操作
- 1. 倉庫的創建
- 2. 文件的提交工作流程
- 3. 分支管理
- 4. 遠程倉庫操作
- 進階操作
- 實際應用建議
- **基本用法**
- **常用命令的幫助示例**
- **幫助文檔的結構**
- **替代方法**
- **練習建議**
- **核心概念**
- **與Git的主要區別**
- **基本操作**
- 1. **倉庫操作**
- 2. **文件管理**
- 3. **提交與更新**
- 4. **查看歷史**
- 5. **分支與合并**
- **優缺點**
- **適用場景**
- **Git遷移建議**
- **SVN vs Git總結**
目錄
Git到底是什么?它該怎末用?
Git 是一款被廣泛應用的分布式版本控制系統,在軟件開發領域發揮著重要作用。它主要用于對項目文件的更改進行跟蹤,能夠有效協調多個開發者在同一項目上開展協作。下面為你詳細介紹其基本概念和常見的使用方法。
核心概念
- 倉庫(Repository):這里面存放著項目的文件以及文件的歷史變更記錄。
- 提交(Commit):它相當于文件狀態的“快照”,每一次提交都記錄了文件的更改情況。
- 分支(Branch):分支是獨立的開發線路,借助分支可以在不影響主分支的前提下對新功能進行開發。
- 合并(Merge):合并是將不同分支上的更改整合到一起的操作。
- 遠程倉庫(Remote):遠程倉庫是存儲在網絡上的倉庫,像 GitHub、GitLab 等平臺上的倉庫就是典型的遠程倉庫。
基礎操作
1. 倉庫的創建
- 初始化本地倉庫:在項目目錄下執行以下命令,就可以創建一個新的 Git 倉庫。
git init
- 克隆遠程倉庫:使用該命令能夠將遠程倉庫的內容復制到本地。
git clone <遠程倉庫URL>
2. 文件的提交工作流程
- 查看文件狀態:通過這個命令可以了解文件的修改情況。
git status
- 添加文件到暫存區:執行此命令可將文件添加到暫存區,為后續的提交做準備。
git add <文件名> # 添加指定文件 git add . # 添加所有文件
- 提交更改:將暫存區的文件更改提交到本地倉庫。
git commit -m "提交說明"
3. 分支管理
- 查看分支:查看當前倉庫中存在的分支。
git branch
- 創建新分支:創建一個新的分支用于開發新功能。
git branch <分支名>
- 切換分支:從當前分支切換到指定分支。
git checkout <分支名>
- 創建并切換分支:這是一個組合命令,用于快速創建并切換到新分支。
git checkout -b <分支名>
- 合并分支:將指定分支的更改合并到當前分支。
git merge <分支名>
4. 遠程倉庫操作
- 關聯遠程倉庫:將本地倉庫與遠程倉庫進行關聯。
git remote add origin <遠程倉庫URL>
- 推送至遠程倉庫:把本地倉庫的提交推送到遠程倉庫。
git push -u origin <分支名>
- 拉取遠程更新:獲取遠程倉庫的最新更改并合并到本地。
git pull origin <分支名>
進階操作
- 查看提交歷史:查看倉庫的提交記錄。
git log
- 撤銷更改:放棄工作區的修改。
git checkout -- <文件名>
- 版本回退:將倉庫回退到指定的提交版本。
git reset --hard <提交哈希值>
- 解決沖突:當合并分支出現沖突時,需要手動編輯沖突文件,然后進行提交。
# 編輯沖突文件后 git add <沖突文件> git commit
實際應用建議
- 使用
.gitignore
文件:在項目根目錄創建該文件,用于排除那些不需要被 Git 跟蹤的文件,像依賴文件、日志文件等。 - 保持提交說明清晰:編寫有意義的提交說明,方便后續查閱和理解更改內容。
- 遵循分支管理策略:可以采用 Git Flow 或 GitHub Flow 等分支管理策略,規范開發流程。
- 定期備份到遠程倉庫:養成定期將本地提交推送到遠程倉庫的習慣,防止數據丟失。
git help <命令>
是 Git 自帶的強大文檔工具,用于查看特定 Git 命令的詳細使用說明和示例。以下是使用方法和常見命令的幫助示例:
基本用法
git help <命令> # 打開瀏覽器查看HTML格式的幫助文檔
git help -m <命令> # 以man手冊格式查看(終端內顯示)
git help -a # 列出所有可用命令
git help -g # 列出所有幫助主題
常用命令的幫助示例
-
查看
git commit
的幫助git help commit
這將顯示
commit
命令的完整文檔,包括參數說明、提交消息規范和示例。 -
查看
git branch
的幫助git help branch
文檔會解釋如何創建、刪除和管理分支,以及與遠程分支的關聯。
-
查看
git merge
的幫助git help merge
幫助文檔的結構
Git 幫助文檔通常包含以下部分:
- SYNOPSIS:命令的基本語法和參數格式。
- DESCRIPTION:命令的功能和適用場景。
- OPTIONS:每個參數的詳細說明。
- EXAMPLES:實用示例(重點關注這部分!)。
- SEE ALSO:相關命令和參考資料。
替代方法
如果你不想打開瀏覽器,可以直接在終端使用 man
命令:
man git-<命令> # 例如:man git-commit
對于快速參考,也可以使用簡化版幫助:
git <命令> --help # 例如:git commit --help
練習建議
- 運行
git help config
,學習如何配置 Git 的用戶信息、別名等。 - 查看
git help remote
,了解如何管理遠程倉庫。 - 通過
git help log
學習如何使用高級日志篩選(如--author
、--since
等)。
掌握 git help
可以讓你在遇到問題時快速找到答案,無需依賴外部教程!
SVN(Subversion)是一種集中式版本控制系統,誕生于2000年,旨在替代CVS成為更高效的代碼管理工具。與Git的分布式架構不同,SVN采用中央服務器+客戶端的模式,所有文件和歷史記錄都存儲在中央服務器上。
核心概念
-
中央倉庫(Repository)
唯一的代碼源,存儲所有文件和歷史版本,類似Git的遠程倉庫。 -
工作副本(Working Copy)
從中央倉庫下載到本地的文件,用戶直接編輯工作副本,再提交更改到服務器。 -
版本號(Revision)
每次提交都會生成全局遞增的版本號(如r1
,r2
),代表倉庫的整體狀態。 -
原子提交(Atomic Commit)
提交操作要么全部成功,要么失敗回滾,確保倉庫一致性。
與Git的主要區別
特性 | SVN(集中式) | Git(分布式) |
---|---|---|
架構 | 依賴中央服務器 | 本地完整倉庫,無需聯網 |
分支成本 | 高(物理復制整個目錄) | 極低(創建指針) |
離線工作 | 不支持 | 完全支持 |
提交對象 | 整個倉庫的快照 | 本地提交,后推送到遠程 |
版本號 | 全局遞增整數 | 40位哈希值 |
基本操作
1. 倉庫操作
svnadmin create /path/to/repo # 創建新倉庫(服務器端)
svn checkout svn://server/repo # 檢出工作副本到本地(客戶端)
2. 文件管理
svn add file.txt # 添加文件到版本控制
svn delete file.txt # 刪除文件
svn move old.txt new.txt # 重命名/移動文件
3. 提交與更新
svn update # 從服務器拉取最新變更
svn commit -m "說明" # 提交本地更改到服務器
4. 查看歷史
svn log # 查看提交歷史
svn diff # 查看文件差異
svn status # 查看工作副本狀態
5. 分支與合并
svn copy trunk branches/new-feature # 創建分支
svn merge branches/new-feature trunk # 合并分支
優缺點
-
優點
- 簡單易用,適合小型團隊和單一代碼庫。
- 清晰的權限管理(基于路徑控制)。
- 對二進制文件(如圖像、文檔)支持更好。
-
缺點
- 依賴中央服務器,離線無法工作。
- 分支操作笨重,合并容易出錯。
- 大數據量下性能較差。
適用場景
- 小型團隊或個人項目。
- 需要嚴格權限控制的場景(如按目錄限制訪問)。
- 管理非代碼資產(如文檔、設計文件)。
Git遷移建議
若想從SVN遷移到Git,可以使用:
git svn clone svn://server/repo # 遷移SVN倉庫到Git
但需注意保留分支和提交歷史的完整性。
SVN vs Git總結
- SVN:適合簡單、集中化管理,依賴中央服務器。
- Git:適合復雜協作、頻繁分支,本地倉庫強大。
現代開發中,Git已成為主流選擇,但SVN在特定場景(如企業遺留系統)仍有使用價值。
創作不易 點點關注呀