讲讲git 和svn
- 目录
-
- Git到底是什么?它该怎末用?
-
- 核心概念
- 基础操作
-
- [1. 仓库的创建](#1. 仓库的创建)
- [2. 文件的提交工作流程](#2. 文件的提交工作流程)
- [3. 分支管理](#3. 分支管理)
- [4. 远程仓库操作](#4. 远程仓库操作)
- 进阶操作
- 实际应用建议
- **基本用法**
- **常用命令的帮助示例**
- **帮助文档的结构**
- **替代方法**
- **练习建议**
- **核心概念**
- **与Git的主要区别**
- **基本操作**
-
- [1. **仓库操作**](#1. 仓库操作)
- [2. **文件管理**](#2. 文件管理)
- [3. **提交与更新**](#3. 提交与更新)
- [4. **查看历史**](#4. 查看历史)
- [5. **分支与合并**](#5. 分支与合并)
- **优缺点**
- **适用场景**
- **Git迁移建议**
- [**SVN vs Git总结**](#SVN vs Git总结)
目录

Git到底是什么?它该怎末用?
Git 是一款被广泛应用的分布式版本控制系统,在软件开发领域发挥着重要作用。它主要用于对项目文件的更改进行跟踪,能够有效协调多个开发者在同一项目上开展协作。下面为你详细介绍其基本概念和常见的使用方法。
核心概念
- 仓库(Repository):这里面存放着项目的文件以及文件的历史变更记录。
- 提交(Commit):它相当于文件状态的"快照",每一次提交都记录了文件的更改情况。
- 分支(Branch):分支是独立的开发线路,借助分支可以在不影响主分支的前提下对新功能进行开发。
- 合并(Merge):合并是将不同分支上的更改整合到一起的操作。
- 远程仓库(Remote):远程仓库是存储在网络上的仓库,像 GitHub、GitLab 等平台上的仓库就是典型的远程仓库。
基础操作
1. 仓库的创建
-
初始化本地仓库 :在项目目录下执行以下命令,就可以创建一个新的 Git 仓库。
bashgit init
-
克隆远程仓库 :使用该命令能够将远程仓库的内容复制到本地。
bashgit clone <远程仓库URL>
2. 文件的提交工作流程
-
查看文件状态 :通过这个命令可以了解文件的修改情况。
bashgit status
-
添加文件到暂存区 :执行此命令可将文件添加到暂存区,为后续的提交做准备。
bashgit add <文件名> # 添加指定文件 git add . # 添加所有文件
-
提交更改 :将暂存区的文件更改提交到本地仓库。
bashgit commit -m "提交说明"
3. 分支管理
-
查看分支 :查看当前仓库中存在的分支。
bashgit branch
-
创建新分支 :创建一个新的分支用于开发新功能。
bashgit branch <分支名>
-
切换分支 :从当前分支切换到指定分支。
bashgit checkout <分支名>
-
创建并切换分支 :这是一个组合命令,用于快速创建并切换到新分支。
bashgit checkout -b <分支名>
-
合并分支 :将指定分支的更改合并到当前分支。
bashgit merge <分支名>
4. 远程仓库操作
-
关联远程仓库 :将本地仓库与远程仓库进行关联。
bashgit remote add origin <远程仓库URL>
-
推送至远程仓库 :把本地仓库的提交推送到远程仓库。
bashgit push -u origin <分支名>
-
拉取远程更新 :获取远程仓库的最新更改并合并到本地。
bashgit pull origin <分支名>
进阶操作
-
查看提交历史 :查看仓库的提交记录。
bashgit log
-
撤销更改 :放弃工作区的修改。
bashgit checkout -- <文件名>
-
版本回退 :将仓库回退到指定的提交版本。
bashgit reset --hard <提交哈希值>
-
解决冲突 :当合并分支出现冲突时,需要手动编辑冲突文件,然后进行提交。
bash# 编辑冲突文件后 git add <冲突文件> git commit
实际应用建议
- 使用
.gitignore
文件:在项目根目录创建该文件,用于排除那些不需要被 Git 跟踪的文件,像依赖文件、日志文件等。 - 保持提交说明清晰:编写有意义的提交说明,方便后续查阅和理解更改内容。
- 遵循分支管理策略:可以采用 Git Flow 或 GitHub Flow 等分支管理策略,规范开发流程。
- 定期备份到远程仓库:养成定期将本地提交推送到远程仓库的习惯,防止数据丢失。
git help <命令>
是 Git 自带的强大文档工具,用于查看特定 Git 命令的详细使用说明和示例。以下是使用方法和常见命令的帮助示例:
基本用法
bash
git help <命令> # 打开浏览器查看HTML格式的帮助文档
git help -m <命令> # 以man手册格式查看(终端内显示)
git help -a # 列出所有可用命令
git help -g # 列出所有帮助主题
常用命令的帮助示例
-
查看
git commit
的帮助bashgit help commit
这将显示
commit
命令的完整文档,包括参数说明、提交消息规范和示例。 -
查看
git branch
的帮助bashgit help branch
文档会解释如何创建、删除和管理分支,以及与远程分支的关联。
-
查看
git merge
的帮助bashgit help merge

帮助文档的结构
Git 帮助文档通常包含以下部分:
- SYNOPSIS:命令的基本语法和参数格式。
- DESCRIPTION:命令的功能和适用场景。
- OPTIONS:每个参数的详细说明。
- EXAMPLES:实用示例(重点关注这部分!)。
- SEE ALSO:相关命令和参考资料。
替代方法
如果你不想打开浏览器,可以直接在终端使用 man
命令:
bash
man git-<命令> # 例如:man git-commit
对于快速参考,也可以使用简化版帮助:
bash
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. 仓库操作
bash
svnadmin create /path/to/repo # 创建新仓库(服务器端)
svn checkout svn://server/repo # 检出工作副本到本地(客户端)
2. 文件管理
bash
svn add file.txt # 添加文件到版本控制
svn delete file.txt # 删除文件
svn move old.txt new.txt # 重命名/移动文件
3. 提交与更新
bash
svn update # 从服务器拉取最新变更
svn commit -m "说明" # 提交本地更改到服务器
4. 查看历史
bash
svn log # 查看提交历史
svn diff # 查看文件差异
svn status # 查看工作副本状态
5. 分支与合并
bash
svn copy trunk branches/new-feature # 创建分支
svn merge branches/new-feature trunk # 合并分支
优缺点
-
优点
- 简单易用,适合小型团队和单一代码库。
- 清晰的权限管理(基于路径控制)。
- 对二进制文件(如图像、文档)支持更好。
-
缺点
- 依赖中央服务器,离线无法工作。
- 分支操作笨重,合并容易出错。
- 大数据量下性能较差。
适用场景
- 小型团队或个人项目。
- 需要严格权限控制的场景(如按目录限制访问)。
- 管理非代码资产(如文档、设计文件)。
Git迁移建议
若想从SVN迁移到Git,可以使用:
bash
git svn clone svn://server/repo # 迁移SVN仓库到Git
但需注意保留分支和提交历史的完整性。
SVN vs Git总结
- SVN:适合简单、集中化管理,依赖中央服务器。
- Git:适合复杂协作、频繁分支,本地仓库强大。
现代开发中,Git已成为主流选择,但SVN在特定场景(如企业遗留系统)仍有使用价值。
创作不易 点点关注呀