一、Git概述
1.1 Git历史
Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。
他们对新的系统制订了若干目标:
- 速度:高效处理大型项目
- 简单的设计:易于理解和实现
- 对非线性开发模式的强力支持:允许成千上万个并行开发的分支
- 完全分布式:每个开发者都有完整的代码库
- 有能力高效管理类似 Linux 内核一样的超大规模项目:包括处理速度和数据量
1.2 Git与SVN对比
SVN(集中式版本控制系统)
SVN是集中式版本控制系统,版本库集中放在中央服务器上。开发人员工作时需要先从中央服务器下载最新版本,开发完成后需要将代码提交到中央服务器。
集中式版本控制工具缺点:
- 服务器单点故障:中央服务器宕机将影响整个工作流程
- 容错性差:开发者无法在无网络连接时提交代码

Git(分布式版本控制系统)
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:
- 本地仓库:位于开发人员自己电脑上的Git仓库,包含完整的历史记录
- 远程仓库:位于远程服务器上的Git仓库,用于团队协作和备份
核心概念:
- Clone(克隆):将远程仓库复制到本地
- Push(推送):将本地仓库代码上传到远程仓库
- Pull(拉取):将远程仓库代码下载到本地仓库
Git 的优势:
- 分布式架构:每个开发者都有完整的代码副本,可以离线工作,更安全可靠
- 强大的分支功能:快速创建和切换分支,方便进行功能开发,支持并行开发
- 完整的历史记录:记录每次修改,可以回退到任意版本,追踪代码变更
1.3 Git工作流程
Git 的标准工作流程包括以下步骤:
- 从远程仓库中克隆代码到本地仓库:使用
git clone命令 - 从本地仓库中 checkout 代码然后进行代码修改:使用
git checkout命令 - 在提交前先将代码添加到暂存区:使用
git add命令 - 提交到本地仓库:使用
git commit命令,本地仓库中保存修改的各个历史版本 - 修改完成后,需要和团队成员共享代码时,将代码 push 到远程仓库:使用
git push命令
1.4 Git下载与安装
下载地址
官方下载地址:https://git-scm.com/download
各平台安装方法
Windows系统:
- 访问 Git 官方下载页面
- 下载适合你系统的版本
- 运行安装程序,建议使用默认选项
- 安装完成后,右键可使用 Git Bash
macOS系统:
- 使用 Homebrew 安装:
brew install git - 或访问 Git 官方下载页面下载安装包
Linux系统:
- Ubuntu/Debian:
sudo apt update && sudo apt install git - CentOS/RHEL:
sudo yum install git - Arch Linux:
sudo pacman -S git
验证安装
安装完成后,在终端/命令行中输入以下命令验证是否安装成功:
git --version
安装成功标志
安装完成后在电脑桌面(或其他目录)点击右键,如果能够看到两个菜单则说明Git安装成功:
- Git GUI:Git提供的图形界面工具
- Git Bash:Git提供的命令行工具
二、Git代码托管服务
2.1 常用的Git代码托管服务
Git 远程仓库可以借助互联网上提供的代码托管服务来实现,其中比较常用的有:
| 服务平台 | 网址 | 特点 |
|---|---|---|
| GitHub | https://github.com/ | 面向开源及私有软件项目的托管平台,只支持 Git 作为唯一的版本库格式 |
| 码云 (Gitee) | https://gitee.com/ | 国内代码托管平台,服务器在国内,速度较快 |
| GitLab | https://about.gitlab.com/ | 用于仓库管理系统的开源项目,在此基础上搭建起来的 web 服务 |
| Bitbucket | https://bitbucket.org/ | 基于 Git 和 Mercurial 的代码托管平台,提供 JIRA 软件集成和支持私有仓库 |
2.2 在码云注册账号
要使用码云的服务,需要先注册账号(地址:https://gitee.com/signup)。
2.3 登录码云并创建Git远程仓库
注册完成后使用邮箱登录(地址:https://gitee.com/login),登录成功后即可创建 Git 远程仓库。
每个 Git 远程仓库都会对应一个网络地址,点击克隆/下载按钮弹出窗口并点击复制按钮可获得这个网络地址。
2.4 邀请其他用户成为仓库成员
在企业实际开发中,一个项目往往由多人共同开发完成。为使多个参与者都有权限操作远程仓库,需要邀请其他项目参与者成为当前仓库的成员。
三、Git常用命令
3.1 环境配置
当安装 Git 后首先要做的事情是设置用户名称和 email 地址,这非常重要,因为每次 Git 提交都会使用该用户信息。
设置用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
Git的全局配置文件.gitconfig通常位于你的用户主目录下。具体路径是:
C:\Users\<你的用户名>\.gitconfig
查看配置信息:
git config --list
查看特定配置项:
git config user.name
通过上面的命令设置的信息会保存在 ~/.gitconfig 文件中。
其他常用配置:
# 设置默认编辑器
git config --global core.editor "vim"
# 设置默认分支名
git config --global init.defaultBranch main
# 设置换行符处理(Linux/macOS)
git config --global core.autocrlf input
# 设置换行符处理(Windows)
git config --global core.autocrlf true
3.2 获取Git仓库
mkdir my-project
cd my-project
git init
克隆现有仓库:
git clone <仓库地址>
# 示例:
git clone https://github.com/user/repo.git
3.3 Git工作区、暂存区和版本库概念
- 工作区(Working Directory):你正在编辑的文件,可以直接修改的文件
- 暂存区(Staging Area):准备提交的文件,使用
git add添加文件 - 仓库(Repository):已提交的文件,使用
git commit提交
3.4 Git工作目录下文件的两种状态
Git 中的文件可以有两种状态:
- 未跟踪(Untracked):新添加的文件,Git 尚未开始跟踪其变化
- 已跟踪(Tracked):已经被纳入版本控制的文件,又可以处于三种状态:
- 已修改(Modified):文件已修改但尚未存入暂存区
- 已暂存(Staged):已修改的文件放在暂存区
- 已提交(Committed):已暂存的文件已经提交到本地仓库
3.5 本地仓库操作
添加文件到暂存区:
git add <file> # 添加指定文件
git add . # 添加所有文件
提交文件到本地仓库:
git commit -m "提交信息"
查看状态:
git status
查看提交历史:
git log
恢复特定版本的文件:
git checkout <commit-hash> <file>
删除文件:
git rm <file>
修改最后一次提交:
git commit --amend
3.6 远程仓库的使用
查看远程仓库:
git remote -v
添加远程仓库:
git remote add origin <repository-url>
推送到远程仓库:
git push origin <branch-name>
从远程仓库获取更新:
git pull origin <branch-name>
3.7 分支管理
创建分支:
git branch <branch-name>
切换分支:
git checkout <branch-name>
创建并切换分支:
git checkout -b new-branch
合并分支:
git merge <branch-name>
删除分支:
git branch -d <branch-name>
3.8 标签管理
创建标签:
git tag <tag-name>
查看标签:
git tag
推送标签到远程仓库:
git push origin <tag-name>
3.9 高级操作
Rebase操作:
git rebase <branch-name>
Cherry-pick操作:
git cherry-pick <commit-hash>
强制合并:
git merge --no-ff <branch-name>
四、解决常见问题
4.1 权限问题
问题描述:推送代码到远程仓库时出现权限错误。
解决方法:
- 确保配置了正确的 SSH 密钥
- 添加密钥到 SSH 代理:
ssh-add ~/.ssh/id_rsa - 检查远程仓库地址:
git remote -v
4.2 冲突问题
问题描述:合并代码时出现冲突。
解决方法:
- 查看冲突文件:
git status - 手动编辑冲突部分
- 使用
git add <冲突文件>标记为已解决 - 完成合并提交:
git commit -m "解决冲突"
4.3 历史回滚问题
问题描述:误提交了错误的代码。
解决方法:
- 回滚到上一个版本:
git reset --hard HEAD~1 - 如果已经推送到远程:
git push origin main --force
五、Git最佳实践
- 使用分支进行开发:可以避免主分支的混乱,提高代码质量
- 定期提交:方便地追踪代码的修改历史
- 编写有意义的提交信息:清晰说明本次提交的目的和内容
- 保持远程仓库与本地同步:定期使用
git pull获取远程更新 - 使用 .gitignore 文件:忽略不需要版本控制的文件(如日志文件、临时文件等)
总结
通过本文的学习,你应该对 Git 的基本概念、安装配置、常用命令以及工作流程有了全面的了解。Git 是开发者必备的一项工具技能,它不仅提升了开发效率,还帮助我们更好地管理和保护代码。继续实践和探索 Git 的高级功能,将使你在团队协作和代码管理方面更加得心应手。
记住,持续实践是学习 Git 的最佳方式。如果在使用过程中遇到问题,可以参考官方文档或社区资源,大多数常见问题都有解决方案。
2万+

被折叠的 条评论
为什么被折叠?



