Git基础入门与实用指南
目录
注意:必读
为何选择Git?
常用Git指令
-
Git简介
-
Git安装指南
2.1 Windows系统
2.2 macOS系统
2.3 Linux系统
- Git初始设置
3.1 查看当前配置
- 仓库创建与维护
4.2 文件加入仓库
-
新建或添加文件
-
加入暂存区
-
检查状态
4.3 提交变更
-
本地提交
-
分支操作
5.1 新建分支
5.2 切换分支
5.3 查看分支
-
分支合并
-
切换至目标分支,例如 master
-
合并其他分支
-
冲突处理要点:不可避免
-
手动修复冲突
-
典型合并冲突示例与解决办法
-
Git冲突解决图形工具推荐
-
避免在Git合并冲突中丢失代码
-
解决冲突后如何保证代码质量
-
查看历史记录
-
远程仓库操作
9.1 添加远程仓库
9.2 推送更改
9.3 拉取更新
总结
工具使用
GitHub Desktop
GitKraken
SourceTree
Visual Studio Code
对新手而言,哪个工具更友好?
这些工具是否支持多平台?
Git Extensions安装与中文配置
前沿技术
Git hooks
Git submodule
请点赞、关注并收藏这篇文章
注意:必读
安装前请先注册Gitee账号,有些朋友可能会问:不是应该注册GitHub吗?如果有条件当然可以选择,但需要科学上网,代理问题自行研究,我没有使用过,不了解具体情况。对于初学者,建议先使用GitLab或Gitee。
为何使用Git?
Git是最广泛采用的分布式版本控制系统之一。在分布式系统中,不存在集中式的服务器来存放所有代码。每个开发者都拥有自己的本地仓库,包含完整的项目历史。开发者可以自由地在本地修改代码,再将更改同步到其他仓库或从其他仓库获取更改。这种架构提供了极高的灵活性和可靠性,即使离线也能继续工作。
仓库(Repository):存放项目文件及所有历史记录和版本信息的地方。
工作区(Working Directory):当前检出的项目文件夹,可在此编辑文件。
暂存区(Staging Area):临时区域,用于存放即将提交的更改。
提交(Commit):将更改保存到仓库,每次提交都是一个快照。
分支(Branch):允许多个开发路径并行工作,各分支可独立更改。
合并(Merge):将一个分支的更改整合到另一个分支。
冲突(Conflict):当两个分支修改了同一文件的相同部分时,合并时会产生冲突。
常用Git指令
git init:新建Git仓库。
git clone [url]:克隆远程仓库到本地。
git add [file]:添加文件到暂存区。
git commit -m "message":提交暂存区更改并附带说明。
git status:查看工作区和暂存区状态。
git push [remote] [branch]:推送本地分支更新到远程仓库。
git pull [remote] [branch]:从远程仓库拉取更新并合并到本地。
git branch:列出、创建或删除分支。
git checkout [branch]:切换分支。
git merge [branch]:将指定分支合并到当前分支。
git log:查看提交历史。
1. Git简介
Git是一款分布式版本控制系统,专门用于高效管理从小到大的各类项目版本。它能协助团队协作、追踪项目变化并简化开发流程。
2. Git安装指南
不同操作系统安装方式如下:
2.1 Windows系统
- 下载Git:
- 访问 Git官网。
- 下载适用于Windows的安装包。
- 安装Git:
- 双击下载的安装包。
- 按提示操作,保持默认选项即可。
- 配置环境变量:
- 确保安装过程中将Git加入系统环境变量。
- 验证安装:
- 打开命令提示符(cmd)或PowerShell,输入:
git --version- 若成功安装,会显示Git版本信息。
2.2 macOS系统
- 使用Homebrew安装:
- 打开终端,输入:
brew install git
- 验证安装:
- 输入命令查看版本:
git --version
- 通过Xcode安装:
- 可通过安装Xcode Command Line Tools安装Git,输入:
xcode-select --install
2.3 Linux系统
- Debian或Ubuntu用户,在终端输入:
sudo apt updatesudo apt install git
- Fedora用户使用:
sudo dnf install git
- Arch Linux用户运行:
sudo pacman -S git
- 验证安装:
git --version
3. Git初始设置
安装完成后,基础配置如下:
- 设置用户名和邮箱:
git config --global user.name "你的Gitee/GitHub用户名" git config --global user.email "你的邮箱" ssh-keygen -t rsa -C "你的Gitee邮箱" 生成密钥 Gitee/GitHub上添加公钥 ssh -T xxxxx@xxxx.com 验证密钥
使用HTTPS协议克隆仓库:
git clone https://gitee.com/用户名/仓库名.git
使用SSH协议克隆仓库:
git clone git@gitee.com:用户名/仓库名.git
测试克隆(如克隆名为tom的用户仓库):
git clone xxxxx@xxxxxxx.com:tom/tomcangku.git
git@github.com是GitHub通用地址,类似地git@gitee.com是Gitee地址
2. 查看配置:
git config --list
4. 创建与管理仓库
4.1 新建仓库
- 使用命令行创建:
mkdir my_project cd my_project git init
- 克隆远程仓库:
git clone https://github.com/username/repo.git
4.2 文件加入仓库
- 创建或添加文件:
touch file.txt
- 添加文件到暂存区:
git add file.txt
- 查看状态:
git status
4.3 提交更改
- 提交文件到本地仓库:
git commit -m "添加file.txt文件"
5. 分支管理
5.1 创建新分支
git checkout -b new_branch
5.2 切换分支
git checkout master
5.3 查看分支
git branch
6. 分支合并
- 切换到目标分支,如 master:
git checkout master
- 合并其他分支:
git merge new_branch
7. 冲突处理:必经之路
1. 手动解决冲突
当两个分支修改了同一文件的同一部分,或一个分支删除了文件而另一个分支修改了该文件时,Git无法自动合并,产生冲突。解决步骤:
- 识别冲突文件:使用
git status查看。 - 打开冲突文件:冲突位置会有标记。
- 编辑文件:决定保留哪部分更改。
- 标记为已解决:删除冲突标记并保存。
- 添加到暂存区:
git add [文件名] - 完成合并:
git commit
2. 典型合并冲突示例及解决办法
- 同一行被修改
# 分支A
def add(a, b): return a + b # 修改了返回值
# 分支B
def add(a, b): return a + b # 添加了注释
解决:保留分支A的更改并添加注释。
def add(a, b): # 返回两个数的和
return a + b # 保留分支A的更改,并添加分支B的注释
- 文件被添加与删除
# 分支A
touch new_file.txt
# 分支B
rm new_file.txt
解决:决定是否需要该文件。
- 不同部分修改
# 分支A
def add(a, b): return a + b # 修改了函数体
# 分支B
def add(a, b): # 添加了新参数
def add(a, b, c): return a + b + c
解决:合并两个分支更改。
def add(a, b, c=None):
if c is not None:
return a + b + c
else:
return a + b # 合并了两个分支的更改
3. Git冲突解决图形工具推荐
- GitHub Desktop:简单易用,适用于GitHub仓库。
- GitKraken:功能强大,提供清晰的分支视图。
- SourceTree:免费,适合图形化管理。
- Visual Studio Code:内置Git支持,处理简单冲突。
- IntelliJ IDEA:对Java/Kotlin开发者友好。
4. 避免代码丢失
- 理解冲突原因
- 备份原始文件
- 逐个解决冲突
- 利用历史版本
- 运行测试
- 代码审查
5. 保证代码质量
- 运行测试
- 代码审查
- 代码风格检查
- 静态分析
- 手动检查
- 合并后复审
8. 查看历史记录
- 查看提交历史:
git log- 查看简洁历史:
git log --oneline
9. 远程仓库操作
9.1 添加远程仓库
git remote add origin https://github.com/username/repo.git
9.2 推送更改
git push origin master
9.3 拉取更新
git pull origin master
10. 删除分支
- 删除本地分支:
git branch -d branch_name- 强制删除:
git branch -D branch_name
11. 其他常用命令
- 查看未跟踪文件:
git ls-files --others --exclude-standard- 恢复未提交更改:
git checkout -- file.txt- 查看当前分支:
git rev-parse --abbrev-ref HEAD- 查看远程地址:
git remote -v
总结
以上是Git的安装与基础使用指南,涵盖从环境搭建到实际操作的详细步骤,适用于大多数核心命令和用法。掌握这些工具能有效进行版本控制,促进团队协作,提高开发效率。随着深入使用,会遇到更复杂需求,持续学习有助于更好掌握Git。
工具使用
GitHub Desktop
- 安装:访问官网下载对应系统版本。
- 克隆仓库:使用GitHub Desktop克隆远程仓库。
- 创建分支:在界面中创建新分支。
- 提交更改:本地更改后提交。
- 解决冲突:冲突时直接在界面中编辑。
- 推送更改:解决后推送。
GitKraken
- 安装:访问官网下载。
- 连接仓库:连接GitHub、GitLab或Bitbucket。
- 创建分支:在界面中创建。
- 提交更改:完成更改后提交。
- 解决冲突:高亮冲突文件,直接编辑。
- 推送更改:解决后推送。
SourceTree
- 安装:访问官网下载。
- 克隆仓库:克隆远程仓库。
- 创建分支:在界面中创建。
- 提交更改:本地更改后提交。
- 解决冲突:冲突文件直接打开编辑。
- 推送更改:解决后推送。
Visual Studio Code
- 安装:下载并安装VS Code。
- 集成Git:安装Git扩展或使用内置支持。
- 解决冲突:编辑器中高亮冲突部分。
- 提交更改:通过源码控制面板提交。
- 推送更改:解决后推送。
IntelliJ IDEA
- 安装:下载并安装IntelliJ IDEA。
- 集成Git:内置Git支持。
- 解决冲突:高亮冲突部分,直接编辑。
- 提交更改:通过"Version Control"面板提交。
- 推送更改:解决后推送。
对初学者而言,哪个工具更友好?
GitHub Desktop 和 Visual Studio Code 对初学者更友好,图形界面直观。 IntelliJ IDEA 对有编程经验者友好。 GitKraken 和 SourceTree 功能强大但需熟悉高级功能。
这些工具是否支持跨平台?
GitHub Desktop、GitKraken、SourceTree 和 Visual Studio Code 支持Windows、macOS、Linux。 IntelliJ IDEA 也跨平台,但功能可能因版本而异。
Git Extensions安装与中文配置
前沿技术
Git前沿技术包括:
- Git LFS:管理大文件。
- Git hooks:自动化脚本。
- Git submodule:嵌入子仓库。
Git hooks
Git hooks是在特定事件触发的脚本,如提交前、推送后等。
常见hooks:
- pre-commit:提交前检查
- commit-msg:提交信息验证
- prepare-commit-msg:修改提交信息
- pre-rebase:rebase前执行
- post-checkout:检出后执行
- post-merge:合并后执行
- pre-push:推送前检查
- pre-receive:接收推送前
- update:每次推送时执行
示例:提交前检查代码风格
#!/bin/sh
# 检查代码风格
if ! grep -E "^(import|from)" my_project/*.py > /dev/null; then
echo "代码风格不符合规范,请检查!"
exit 1
fi
Git submodule
Git submodule 允许在主仓库中嵌入其他仓库。
使用步骤:
- 添加子仓库:
git submodule add <submodule_url> <submodule_dir>
- 初始化子仓库:
git submodule init
- 更新子仓库:
git submodule update
- 提交更改时同时提交主仓库和子仓库。
- 删除子仓库:
git submodule deinit <submodule_dir>
rm -rf <submodule_dir>
git rm <submodule_dir>
- 拉取子仓库最新代码:
git submodule update --remote