Git 基本操作
Git 基本操作教程
掌握Git核心命令和工作流程,高效管理代码版本
Git 工作区概念
理解Git的三个主要工作区域是掌握Git操作的基础:
基本工作流程
Git的基本工作流程包括修改文件、暂存更改和提交更改三个步骤:
1
检查仓库状态
使用git status查看工作目录和暂存区的状态:
git status
这个命令会显示哪些文件已被修改、哪些文件已暂存,以及哪些文件未被跟踪。
2
添加文件到暂存区
使用git add将文件添加到暂存区:
# 添加特定文件
git add filename.txt
# 添加所有修改和新增文件
git add .
# 交互式添加文件
git add -p
3
提交更改
使用git commit将暂存区的更改提交到仓库:
# 提交并添加提交信息
git commit -m "描述提交内容"
# 添加所有已跟踪文件的修改并提交
git commit -a -m "描述提交内容"
# 修改上一次提交
git commit --amend
最佳实践: 提交信息应该清晰、简洁,说明本次提交的目的和内容变化。
查看提交历史
Git提供了多种查看项目历史记录的方式:
简洁日志
单行显示提交历史:
git log --oneline
图形化日志
显示分支和合并历史:
git log --graph --oneline
过滤日志
按作者、时间等过滤:
# 按作者过滤
git log --author="用户名"
# 按时间过滤
git log --since="2023-01-01"
查看特定提交
使用git show查看特定提交的详细信息:
# 查看最新提交
git show
# 查看特定提交
git show commit_hash
# 查看特定文件的更改历史
git log -p filename
分支操作
分支是Git最强大的功能之一,允许你在独立的开发线上工作。
查看分支
列出所有分支:
# 列出本地分支
git branch
# 列出所有分支(包括远程)
git branch -a
创建分支
创建新分支:
# 创建分支
git branch branch_name
# 创建并切换到新分支
git checkout -b branch_name
切换分支
在不同分支间切换:
# 切换分支
git checkout branch_name
# 切换分支(新版本Git)
git switch branch_name
合并分支
将分支合并到当前分支:
# 合并分支
git merge branch_name
# 取消合并(合并冲突时)
git merge --abort
删除分支
删除已合并的分支:
# 删除本地分支
git branch -d branch_name
# 强制删除分支
git branch -D branch_name
变基操作
将当前分支变基到目标分支:
# 变基操作
git rebase target_branch
# 交互式变基
git rebase -i target_branch
注意: 变基会重写提交历史,在共享分支上使用时要特别小心。
远程仓库操作
与远程仓库协作是团队开发的关键部分。
查看远程仓库
查看已配置的远程仓库:
# 查看远程仓库
git remote -v
# 查看远程仓库详细信息
git remote show origin
添加远程仓库
添加新的远程仓库:
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 修改远程仓库URL
git remote set-url origin new_url
获取远程更新
从远程仓库获取更新:
# 获取远程更新但不合并
git fetch origin
# 获取并合并远程更新
git pull origin main
# 获取所有远程仓库的更新
git fetch --all
推送到远程
将本地提交推送到远程仓库:
# 推送到远程仓库
git push origin main
# 推送并设置上游分支
git push -u origin branch_name
# 强制推送(谨慎使用)
git push -f origin main
撤销操作
Git提供了多种撤销更改的方法。
撤销工作区更改
撤销工作目录中的更改:
# 撤销特定文件的修改
git checkout -- filename
# 撤销所有修改
git checkout -- .
# 恢复特定提交的文件版本
git checkout commit_hash -- filename
撤销暂存区更改
将文件从暂存区移回工作区:
# 从暂存区移除特定文件
git reset HEAD filename
# 从暂存区移除所有文件
git reset HEAD
撤销提交
撤销已提交的更改:
# 撤销最新提交,保留更改在工作区
git reset --soft HEAD~1
# 撤销最新提交,删除更改
git reset --hard HEAD~1
# 回退到特定提交
git reset --hard commit_hash
恢复删除的分支
恢复误删的分支:
# 查找已删除分支的提交哈希
git reflog
# 恢复分支
git checkout -b branch_name commit_hash
警告: git reset --hard会永久删除未提交的更改,使用前请确保已备份重要更改。
标签操作
标签用于标记重要的提交点,通常用于版本发布。
创建标签
创建新的标签:
# 创建轻量标签
git tag v1.0.0
# 创建附注标签
git tag -a v1.0.0 -m "版本1.0.0发布"
# 为特定提交创建标签
git tag -a v1.0.0 commit_hash -m "标签消息"
查看标签
列出所有标签:
# 列出所有标签
git tag
# 查看标签详细信息
git show v1.0.0
推送标签
将标签推送到远程仓库:
# 推送特定标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags
删除标签
删除本地和远程标签:
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签
git push origin --delete v1.0.0
常用工作流示例
日常开发工作流
# 开始新的一天,获取最新代码
git pull origin main
# 创建功能分支
git checkout -b feature/new-feature
# 进行开发并提交更改
git add .
git commit -m "实现新功能"
# 推送功能分支到远程
git push -u origin feature/new-feature
# 创建Pull Request进行代码审查
# ... 在GitHub/GitLab上操作 ...
# 合并后,切换回主分支并更新
git checkout main
git pull origin main
# 删除本地功能分支
git branch -d feature/new-feature
修复紧急bug工作流
# 从主分支创建热修复分支
git checkout -b hotfix/critical-bug main
# 修复bug并提交
git add .
git commit -m "修复严重bug"
# 切换到主分支并合并修复
git checkout main
git merge hotfix/critical-bug
# 推送到远程
git push origin main
# 删除热修复分支
git branch -d hotfix/critical-bug
快速参考表
基本命令
git init - 初始化新仓库
git clone - 克隆现有仓库
git status - 查看仓库状态
git add - 添加文件到暂存区
git commit - 提交更改
git push - 推送到远程
git pull - 从远程拉取更新
分支命令
git branch - 列出分支
git branch name - 创建分支
git checkout name - 切换分支
git merge name - 合并分支
git branch -d name - 删除分支
git rebase - 变基分支
历史与撤销
git log - 查看提交历史
git diff - 查看更改
git checkout -- file - 撤销工作区更改
git reset HEAD file - 撤销暂存区更改
git reset --hard - 撤销提交
git revert - 创建撤销提交
远程命令
git remote -v - 查看远程
git remote add - 添加远程
git fetch - 获取远程更新
git pull - 拉取并合并
git push - 推送到远程
git push -u - 推送并设置上游