Git 是目前最主流的分布式版本控制系统,简单来说,它就是一个能帮你记录文件所有历史修改、支持随时"时光倒流"和多人协作开发的"超级后悔药"。除了当项目控制系统使用,这个作用外我们还可以把这个工具当做U盘来使用,很多个人开发者做了很多项目有时更换电脑或更换工作时我们可以新建一个git 个人账号 把这些项目挂在git上设置私有,但是这样子做有一定项目被泄露的风险,如果非重要项目我们可以这样子来操作。
以下是关于 Git 的详细解析,包括它与其他工具的对比、安装步骤及核心使用说明。
1. 什么是 Git?与其他工具对比
Git 的核心特点是分布式 ,这使它与传统的集中式系统(如 SVN)有本质区别。
核心概念对比
| 特性 | Git (分布式) | SVN (集中式) | Mercurial (分布式) |
|---|---|---|---|
| 架构 | 每个开发者本地都有完整的版本仓库 | 只有中央服务器有完整版本记录 | 类似Git,每个本地都是完整仓库 |
| 网络依赖 | 大部分操作(提交、查看历史、对比)在本地完成,离线可用 | 几乎所有操作都需要联网,无法连接服务器就无法提交或查看日志 | 支持离线操作 |
| 分支管理 | 极轻量、强大,创建和切换分支速度快,鼓励频繁使用分支开发 | 分支操作较笨重,本质是复制目录,合并复杂且慢 | 分支管理功能良好,但相比Git略显笨重 |
| 学习曲线 | 较陡峭。概念多(暂存区、哈希值等),命令丰富 | 平缓。概念简单,配合图形化工具(如TortoiseSVN)容易上手 | 相对平缓,命令设计更简洁直观 |
| 权限控制 | 主要通过系统文件权限或托管平台(如GitLab)实现,粒度较粗 | 粒度精细,可以精确控制到目录级别的读写权限 | 权限控制能力一般 |
| 存储方式 | 每次提交存储的是完整文件的快照(或指向快照的指针) | 存储的是文件差异(即每次修改的内容) | 类似Git,存储快照 |
优缺点总结
-
Git 优点:速度快、适合分布式协作、分支管理强大、数据完整性高(SHA-1校验)。
-
Git 缺点:相对难学、命令较多、不支持部分检出(必须克隆整个仓库,但可以通过sparse-checkout缓解)。
2. Git 详细安装操作
在开始使用前,需要先在你的电脑上安装 Git 环境。
Windows 系统
-
下载 :访问官网 https://git-scm.com/download/win,下载会自动开始。
-
安装 :运行下载的
.exe文件,一路点击Next即可。建议保持默认选项,这样会自动安装 Git Bash 终端,并将其添加到系统右键菜单中。 -
验证 :安装完成后,在开始菜单找到
Git Bash并打开,输入以下命令,若显示版本号则安装成功:git --version
macOS 系统
-
方法一(推荐) :如果你安装了 Homebrew,在终端输入
brew install git。 -
方法二 :系统可能自带了旧版 Git,输入
git --version检查。若没有或想更新,可以去官网下载安装包。
Linux 系统 (Debian/Ubuntu)
使用终端执行以下命令 :
sudo apt update
sudo apt install git
git --version # 验证安装
3. 初始化配置
安装完成后,需要告诉 Git 你是谁。打开终端(Git Bash或命令行),输入以下命令设置全局用户名和邮箱(提交代码时会用到):
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
注意:此邮箱建议与你使用的代码托管平台(如GitHub、GitLab)保持一致。
4. Git 详细使用说明
Git 的工作流程主要围绕三个区域:工作区 (你写代码的文件夹)、暂存区 (临时存放改动的地方)、仓库(保存所有历史版本的地方)。
4.1 基础操作流程
-
初始化仓库
进入你的项目文件夹,右键打开
Git Bash或终端,执行:git init
-
执行后,该文件夹下会生成一个隐藏的
.git文件夹,表示仓库创建成功 。 -
添加文件到暂存区
新建或修改文件后,需要告诉 Git 你要追踪哪些文件。
git add README.md # 添加单个文件
git add . # 添加当前目录下所有修改/新增的文件
3. 提交到本地仓库
将暂存区的内容永久记录到本地仓库。
git commit -m "这里写本次修改的说明,例如:修复了登录按钮的样式"
-m 参数后面是提交信息,这是强制要求的,好的信息有助于理解历史记录 。
- 查看状态与历史
-
查看当前状态 :
git status,随时查看哪些文件被修改了、哪些在暂存区 。 -
查看提交历史 :
git log,查看所有的提交记录。加--oneline可以简洁显示 。
4.2 远程仓库协作 (GitHub/GitLab)
为了让代码有备份并方便与他人协作,通常需要将本地仓库关联到远程仓库。
-
克隆远程仓库
如果你要参与一个现有项目,首先要把它下载到本地:
git clone git@github.com:用户名/仓库名.git # 或者使用 HTTPS 地址 git clone https://github.com/用户名/仓库名.git运行后,Git 会在本地创建一个文件夹,并自动建立与远程仓库的关联
2.推送与拉取
-
推送到远程:将本地提交的代码上传到服务器。
git push origin main
-
origin是远程仓库的默认别名,main是分支名。 -
拉取远程更新:将服务器上的最新代码下载并合并到本地。
git pull origin main
这相当于执行了 git fetch (获取) 和 git merge (合并) 两个动作
4.3 分支管理 (Git 的杀手锏)
分支允许你在不影响主线(main/master)的情况下开发新功能。
-
创建并切换分支:
git checkout -b feature-login
-
这条命令创建了一个名为
feature-login的新分支,并切换过去 。 -
切换回主分支:
git checkout main
合并分支 :
在 feature-login 上开发完成后,切回 main 分支,执行合并:
git merge feature-login
删除分支 :
合并完成后,可以删除功能分支
git branch -d feature-login
4.4 撤销与回退
-
撤销工作区的修改:改乱了文件,想直接丢弃。
git checkout -- 文件名
撤销暂存区的修改 :git add 加错了文件,想撤回来。
git reset HEAD 文件名
版本回退:提交错了,想回到上一个版本。
git reset --hard HEAD^ # 回退到上一个版本
git reset --hard 版本号 # 回退到指定版本号(版本号通过 git log 查看)
注意 :--hard 会彻底删除工作区的改动,比较危险,请谨慎使用 。
git修改现有项目绑定的仓库
直接修改远程仓库URL(推荐)
1. 查看当前远程仓库
# 查看当前绑定的远程仓库
git remote -v
# 输出示例:
# origin https://github.com/old-username/old-repo.git (fetch)
# origin https://github.com/old-username/old-repo.git (push)
2. 修改远程仓库地址
# 方法A:直接设置新的URL
git remote set-url origin https://github.com/new-username/new-repo.git
# 方法B:先删除再添加(效果相同)
git remote remove origin
git remote add origin https://github.com/new-username/new-repo.git
3. 验证修改结果
# 查看修改后的远程仓库
git remote -v
# 应该显示新的仓库地址
# origin https://github.com/new-username/new-repo.git (fetch)
# origin https://github.com/new-username/new-repo.git (push)
4. 推送到新仓库
# 推送到新的远程仓库
git push -u origin main
# 或
git push -u origin master
检查本地分支
有时推送报错误
error: src refspec bj-huabo-mesh-daq does not match any
error: failed to push some refs to
我们可以检查下本地分支名是远程分支名是否一致
# 查看所有本地分支
git branch
# 查看当前所在分支
git branch --show-current
总结
Git 是现代软件开发的必备技能。掌握了 add、commit、push、pull、branch 和 merge 这六个核心命令,配合 status 和 log 的查看,你就可以完成日常开发中的绝大多数版本控制需求了。