Git 从零开始完全指南
Git 是一个强大的分布式版本控制系统,它可以帮助你跟踪代码变化、协作开发,并管理项目的各个版本。这份指南将从最基础的概念开始,帮助你掌握 Git 的核心功能和工作流程。
目录
Git 简介
什么是 Git?
Git 是由 Linus Torvalds(Linux 内核的创始人)开发的分布式版本控制系统。它设计用来跟踪文件变化,并协调多人协作的软件开发。
为什么使用 Git?
- 版本控制:记录文件的所有历史变更
- 协作开发:多人同时在同一项目上工作
- 分支功能:可以创建独立环境进行功能开发
- 回退能力:可以轻松回退到之前的版本
- 分布式系统:每个开发者都拥有完整的仓库副本
Git 与其他版本控制系统的区别
Git 相比 SVN 等传统版本控制系统具有以下优势:
安装 Git
Windows
- 访问 Git 官网下载安装程序
- 运行安装程序,保持大部分默认选项
- 可以选择使用 Git Bash 或 Windows 命令行
macOS
使用 Homebrew:
brew install git
或下载 Git for Mac 安装程序
Linux
基于 Debian/Ubuntu:
sudo apt-get update
sudo apt-get install git
基于 Fedora:
sudo dnf install git
初始化配置
安装 Git 后,首先需要配置你的身份信息:
# 设置全局用户名
git config --global user.name "你的名字"
# 设置全局邮箱
git config --global user.email "你的邮箱@example.com"
其他有用的配置:
# 设置默认编辑器
git config --global core.editor "vim"
# 查看所有配置
git config --list
基本概念
Git 的三个区域
Git 项目有三个主要区域:
- 工作区(Working Directory):你实际编辑文件的地方
- 暂存区(Staging Area/Index):准备提交的变更
- 仓库(Repository):已提交的所有版本历史
Git 文件的生命周期
创建仓库
有两种方式创建 Git 仓库:
1. 初始化新仓库
# 创建并进入项目目录
mkdir my-project
cd my-project
# 初始化Git仓库
git init
2. 克隆现有仓库
# 克隆远程仓库到本地
git clone https://github.com/username/repository.git
# 克隆到指定目录
git clone https://github.com/username/repository.git my-folder
基本操作
检查状态
# 查看仓库当前状态
git status
添加文件到暂存区
# 添加单个文件
git add filename.txt
# 添加所有变更
git add .
# 交互式添加
git add -i
提交变更
# 提交已暂存的变更
git commit -m "提交说明"
# 跳过暂存区直接提交所有变更(仅跟踪的文件)
git commit -am "提交说明"
查看历史
# 查看提交历史
git log
# 查看简洁历史
git log --oneline
# 查看图形化历史
git log --graph --oneline --all
撤销变更
# 撤销工作区的修改
git checkout -- filename.txt
# 从暂存区撤回(但保留工作区的修改)
git restore --staged filename.txt
# 修改上一次提交
git commit --amend
分支管理
分支操作基础
# 查看所有分支
git branch
# 创建新分支
git branch feature-x
# 切换分支
git checkout feature-x
# 创建并切换分支(简写)
git checkout -b feature-y
# 删除分支
git branch -d feature-x
合并分支
# 将指定分支合并到当前分支
git checkout main
git merge feature-x
# 合并时创建新的合并提交
git merge --no-ff feature-x
分支工作流
远程仓库
添加远程仓库
# 添加远程仓库
git remote add origin https://github.com/username/repository.git
# 查看远程仓库
git remote -v
推送到远程仓库
# 推送到远程仓库的指定分支
git push origin main
# 设置默认的上游分支
git push -u origin main
# 之后可以直接使用
git push
获取远程更新
# 获取远程仓库的更新
git fetch origin
# 拉取并合并远程更新
git pull origin main
# 简写(如果已设置上游分支)
git pull
解决冲突
当多人修改同一文件的同一部分时,合并时会产生冲突:
# 合并分支时可能出现冲突
git merge feature-branch
冲突标记示例:
<<<<<<< HEAD
这是当前分支中的内容
=======
这是要合并的分支中的内容
>>>>>>> feature-branch
解决冲突流程:
- 打开包含冲突的文件
- 找到并解决所有冲突标记处的内容
- 保存文件
- 添加已解决冲突的文件到暂存区
- 提交更改
# 解决冲突后
git add resolved-file.txt
git commit -m "解决合并冲突"
Git 工作流
集中式工作流
所有开发者共用一个主分支(main/master)。
功能分支工作流
每个新功能都在专门的分支上开发。
Git Flow
更复杂的分支策略,包含 main、develop、feature、release 和 hotfix 分支。
进阶技巧
暂存工作
# 暂存当前工作
git stash
# 查看暂存列表
git stash list
# 应用最近的暂存
git stash apply
# 应用并删除最近的暂存
git stash pop
# 应用特定的暂存
git stash apply stash@{2}
重写历史
# 修改最近的commit信息
git commit --amend
# 交互式rebase
git rebase -i HEAD~3
# 压缩多个提交
git rebase -i HEAD~3 # 然后将pick改为squash
Cherry-Pick
# 挑选特定提交应用到当前分支
git cherry-pick commit-hash
标签管理
# 创建轻量标签
git tag v1.0.0
# 创建附注标签
git tag -a v1.0.0 -m "Release version 1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
常见问题
.gitignore 文件
用于指定不需要 Git 跟踪的文件:
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略特定文件
config.ini
恢复已删除的提交
# 查看所有操作历史,包括已"删除"的提交
git reflog
# 恢复到特定状态
git reset --hard HEAD@{2}
大文件处理
对于大型二进制文件,考虑使用 Git LFS(大文件存储):
# 安装 Git LFS
git lfs install
# 跟踪特定文件类型
git lfs track "*.psd"
# 确保 .gitattributes 也被提交
git add .gitattributes
小结
Git 是一个功能强大的版本控制工具,掌握它可以极大提高开发效率和协作能力。从基本的提交、分支操作,到高级的工作流和问题处理,希望这份指南能帮助你从零开始成为 Git 专家。
记住,熟练使用 Git 需要实践。每天使用这些命令,慢慢地你会发现 Git 成为你开发工作中不可或缺的工具。
Happy coding!# Git 从零开始完全指南
Git 是一个强大的分布式版本控制系统,它可以帮助你跟踪代码变化、协作开发,并管理项目的各个版本。这份指南将从最基础的概念开始,帮助你掌握 Git 的核心功能和工作流程。
目录
Git 简介
什么是 Git?
Git 是由 Linus Torvalds(Linux 内核的创始人)开发的分布式版本控制系统。它设计用来跟踪文件变化,并协调多人协作的软件开发。
为什么使用 Git?
- 版本控制:记录文件的所有历史变更
- 协作开发:多人同时在同一项目上工作
- 分支功能:可以创建独立环境进行功能开发
- 回退能力:可以轻松回退到之前的版本
- 分布式系统:每个开发者都拥有完整的仓库副本
Git 与其他版本控制系统的区别
Git 相比 SVN 等传统版本控制系统具有以下优势:
安装 Git
Windows
- 访问 Git 官网下载安装程序
- 运行安装程序,保持大部分默认选项
- 可以选择使用 Git Bash 或 Windows 命令行
macOS
使用 Homebrew:
brew install git
或下载 Git for Mac 安装程序
Linux
基于 Debian/Ubuntu:
sudo apt-get update
sudo apt-get install git
基于 Fedora:
sudo dnf install git
初始化配置
安装 Git 后,首先需要配置你的身份信息:
# 设置全局用户名
git config --global user.name "你的名字"
# 设置全局邮箱
git config --global user.email "你的邮箱@example.com"
其他有用的配置:
# 设置默认编辑器
git config --global core.editor "vim"
# 查看所有配置
git config --list
基本概念
Git 的三个区域
Git 项目有三个主要区域:
- 工作区(Working Directory):你实际编辑文件的地方
- 暂存区(Staging Area/Index):准备提交的变更
- 仓库(Repository):已提交的所有版本历史
Git 文件的生命周期
创建仓库
有两种方式创建 Git 仓库:
1. 初始化新仓库
# 创建并进入项目目录
mkdir my-project
cd my-project
# 初始化Git仓库
git init
2. 克隆现有仓库
# 克隆远程仓库到本地
git clone https://github.com/username/repository.git
# 克隆到指定目录
git clone https://github.com/username/repository.git my-folder
基本操作
检查状态
# 查看仓库当前状态
git status
添加文件到暂存区
# 添加单个文件
git add filename.txt
# 添加所有变更
git add .
# 交互式添加
git add -i
提交变更
# 提交已暂存的变更
git commit -m "提交说明"
# 跳过暂存区直接提交所有变更(仅跟踪的文件)
git commit -am "提交说明"
查看历史
# 查看提交历史
git log
# 查看简洁历史
git log --oneline
# 查看图形化历史
git log --graph --oneline --all
撤销变更
# 撤销工作区的修改
git checkout -- filename.txt
# 从暂存区撤回(但保留工作区的修改)
git restore --staged filename.txt
# 修改上一次提交
git commit --amend
分支管理
分支操作基础
# 查看所有分支
git branch
# 创建新分支
git branch feature-x
# 切换分支
git checkout feature-x
# 创建并切换分支(简写)
git checkout -b feature-y
# 删除分支
git branch -d feature-x
合并分支
# 将指定分支合并到当前分支
git checkout main
git merge feature-x
# 合并时创建新的合并提交
git merge --no-ff feature-x
分支工作流
远程仓库
添加远程仓库
# 添加远程仓库
git remote add origin https://github.com/username/repository.git
# 查看远程仓库
git remote -v
推送到远程仓库
# 推送到远程仓库的指定分支
git push origin main
# 设置默认的上游分支
git push -u origin main
# 之后可以直接使用
git push
获取远程更新
# 获取远程仓库的更新
git fetch origin
# 拉取并合并远程更新
git pull origin main
# 简写(如果已设置上游分支)
git pull
解决冲突
当多人修改同一文件的同一部分时,合并时会产生冲突:
# 合并分支时可能出现冲突
git merge feature-branch
冲突标记示例:
<<<<<<< HEAD
这是当前分支中的内容
=======
这是要合并的分支中的内容
>>>>>>> feature-branch
解决冲突流程:
- 打开包含冲突的文件
- 找到并解决所有冲突标记处的内容
- 保存文件
- 添加已解决冲突的文件到暂存区
- 提交更改
# 解决冲突后
git add resolved-file.txt
git commit -m "解决合并冲突"
Git 工作流
集中式工作流
所有开发者共用一个主分支(main/master)。
功能分支工作流
每个新功能都在专门的分支上开发。
Git Flow
更复杂的分支策略,包含 main、develop、feature、release 和 hotfix 分支。
进阶技巧
暂存工作
# 暂存当前工作
git stash
# 查看暂存列表
git stash list
# 应用最近的暂存
git stash apply
# 应用并删除最近的暂存
git stash pop
# 应用特定的暂存
git stash apply stash@{2}
重写历史
# 修改最近的commit信息
git commit --amend
# 交互式rebase
git rebase -i HEAD~3
# 压缩多个提交
git rebase -i HEAD~3 # 然后将pick改为squash
Cherry-Pick
# 挑选特定提交应用到当前分支
git cherry-pick commit-hash
标签管理
# 创建轻量标签
git tag v1.0.0
# 创建附注标签
git tag -a v1.0.0 -m "Release version 1.0.0"
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
常见问题
.gitignore 文件
用于指定不需要 Git 跟踪的文件:
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略特定文件
config.ini
恢复已删除的提交
# 查看所有操作历史,包括已"删除"的提交
git reflog
# 恢复到特定状态
git reset --hard HEAD@{2}
大文件处理
对于大型二进制文件,考虑使用 Git LFS(大文件存储):
# 安装 Git LFS
git lfs install
# 跟踪特定文件类型
git lfs track "*.psd"
# 确保 .gitattributes 也被提交
git add .gitattributes
小结
Git 是一个功能强大的版本控制工具,掌握它可以极大提高开发效率和协作能力。从基本的提交、分支操作,到高级的工作流和问题处理,希望这份指南能帮助你从零开始成为 Git 专家。
记住,熟练使用 Git 需要实践。每天使用这些命令,慢慢地你会发现 Git 成为你开发工作中不可或缺的工具。
Happy coding!