Git 从零开始完全指南

Git 从零开始完全指南

Git 是一个强大的分布式版本控制系统,它可以帮助你跟踪代码变化、协作开发,并管理项目的各个版本。这份指南将从最基础的概念开始,帮助你掌握 Git 的核心功能和工作流程。

目录

  1. Git 简介
  2. 安装 Git
  3. 初始化配置
  4. 基本概念
  5. 创建仓库
  6. 基本操作
  7. 分支管理
  8. 远程仓库
  9. 解决冲突
  10. Git 工作流
  11. 进阶技巧
  12. 常见问题

Git 简介

什么是 Git?

Git 是由 Linus Torvalds(Linux 内核的创始人)开发的分布式版本控制系统。它设计用来跟踪文件变化,并协调多人协作的软件开发。

为什么使用 Git?

  • 版本控制:记录文件的所有历史变更
  • 协作开发:多人同时在同一项目上工作
  • 分支功能:可以创建独立环境进行功能开发
  • 回退能力:可以轻松回退到之前的版本
  • 分布式系统:每个开发者都拥有完整的仓库副本

Git 与其他版本控制系统的区别

Git 相比 SVN 等传统版本控制系统具有以下优势:

集中式 VCS
单一中央仓库
依赖网络连接
Git 分布式 VCS
每个开发者有完整仓库
可离线工作
更快的操作速度

安装 Git

Windows

  1. 访问 Git 官网下载安装程序
  2. 运行安装程序,保持大部分默认选项
  3. 可以选择使用 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 项目有三个主要区域:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 工作区(Working Directory):你实际编辑文件的地方
  2. 暂存区(Staging Area/Index):准备提交的变更
  3. 仓库(Repository):已提交的所有版本历史

Git 文件的生命周期

新文件
git add
git commit
编辑文件
git add
删除文件
Untracked
Staged
Committed
Modified

创建仓库

有两种方式创建 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

解决冲突流程:

  1. 打开包含冲突的文件
  2. 找到并解决所有冲突标记处的内容
  3. 保存文件
  4. 添加已解决冲突的文件到暂存区
  5. 提交更改
# 解决冲突后
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 的核心功能和工作流程。

目录

  1. Git 简介
  2. 安装 Git
  3. 初始化配置
  4. 基本概念
  5. 创建仓库
  6. 基本操作
  7. 分支管理
  8. 远程仓库
  9. 解决冲突
  10. Git 工作流
  11. 进阶技巧
  12. 常见问题

Git 简介

什么是 Git?

Git 是由 Linus Torvalds(Linux 内核的创始人)开发的分布式版本控制系统。它设计用来跟踪文件变化,并协调多人协作的软件开发。

为什么使用 Git?

  • 版本控制:记录文件的所有历史变更
  • 协作开发:多人同时在同一项目上工作
  • 分支功能:可以创建独立环境进行功能开发
  • 回退能力:可以轻松回退到之前的版本
  • 分布式系统:每个开发者都拥有完整的仓库副本

Git 与其他版本控制系统的区别

Git 相比 SVN 等传统版本控制系统具有以下优势:

集中式 VCS
单一中央仓库
依赖网络连接
Git 分布式 VCS
每个开发者有完整仓库
可离线工作
更快的操作速度

安装 Git

Windows

  1. 访问 Git 官网下载安装程序
  2. 运行安装程序,保持大部分默认选项
  3. 可以选择使用 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 项目有三个主要区域:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 工作区(Working Directory):你实际编辑文件的地方
  2. 暂存区(Staging Area/Index):准备提交的变更
  3. 仓库(Repository):已提交的所有版本历史

Git 文件的生命周期

新文件
git add
git commit
编辑文件
git add
删除文件
Untracked
Staged
Committed
Modified

创建仓库

有两种方式创建 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

解决冲突流程:

  1. 打开包含冲突的文件
  2. 找到并解决所有冲突标记处的内容
  3. 保存文件
  4. 添加已解决冲突的文件到暂存区
  5. 提交更改
# 解决冲突后
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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值