前言
Git作为当今最流行的分布式版本控制系统,已经成为开发者必备的技能之一。无论你是独立开发者还是团队协作,掌握Git的基本操作都能极大提高工作效率。本文将详细介绍Git的常用命令,帮助你快速上手并精通Git的基本使用。
一、Git基础概念
在深入命令之前,我们先了解几个Git的核心概念:
- 仓库(Repository):项目所在的目录,包含所有文件的历史记录
- 工作区(Working Directory):你当前编辑的文件目录
- 暂存区(Staging Area):准备提交的文件暂存区域
- 提交(Commit):对文件更改的永久快照
- 分支(Branch):独立开发线,默认有master/main分支
- 远程仓库(Remote):托管在网络上的项目仓库
二、Git安装与配置
1. 安装Git
Windows: 下载Git for Windows (Git for Windows)
Mac: 使用Homebrew brew install git
Linux: sudo apt-get install git
(Ubuntu/Debian) 或 sudo yum install git
(CentOS)
2. 基本配置
# 设置用户名
git config --global user.name "Your Name"# 设置邮箱
git config --global user.email "your.email@example.com"# 查看配置
git config --list# 设置默认编辑器为VS Code
git config --global core.editor "code --wait"
三、Git常用命令详解
1. 创建和克隆仓库
# 在当前目录初始化新仓库
git init# 克隆远程仓库
git clone <repository-url># 克隆指定分支
git clone -b <branch-name> <repository-url># 克隆深度为1(只获取最新版本,节省时间空间)
git clone --depth 1 <repository-url>
2. 基本工作流程
# 检查当前文件状态
git status# 添加文件到暂存区
git add <file-name> # 添加特定文件
git add . # 添加所有更改文件
git add -A # 添加所有更改(包括删除的文件)
git add -u # 添加已跟踪文件的更改# 提交更改
git commit -m "提交信息"# 提交并跳过暂存区(自动add已跟踪文件)
git commit -a -m "提交信息"# 修改最后一次提交
git commit --amend
3. 查看历史记录
# 查看提交历史
git log# 简洁版历史
git log --oneline# 显示文件更改详情
git log -p# 显示最近n条提交
git log -n <number># 图形化显示分支
git log --graph --oneline --all# 显示某个文件的修改历史
git log -p <file-name># 显示某人的提交
git log --author="name"# 按日期筛选
git log --since="1 week ago"
4. 分支管理
# 查看所有分支
git branch # 本地分支
git branch -a # 所有分支(包括远程)
git branch -v # 查看分支最后提交# 创建新分支
git branch <branch-name># 切换分支
git checkout <branch-name># 创建并切换分支
git checkout -b <branch-name># 删除分支
git branch -d <branch-name> # 安全删除(已合并)
git branch -D <branch-name> # 强制删除(未合并)# 重命名当前分支
git branch -m <new-name># 合并分支
git merge <branch-name># 变基(将当前分支变基到目标分支)
git rebase <branch-name>
5. 远程操作
# 查看远程仓库
git remote -v# 添加远程仓库
git remote add <remote-name> <repository-url># 重命名远程仓库
git remote rename <old-name> <new-name># 删除远程仓库
git remote remove <remote-name># 获取远程更新但不合并
git fetch <remote-name># 拉取远程更新并合并
git pull <remote-name> <branch-name># 推送到远程
git push <remote-name> <branch-name># 推送并设置上游分支
git push -u <remote-name> <branch-name># 强制推送(谨慎使用)
git push -f# 删除远程分支
git push <remote-name> --delete <branch-name>
6. 撤销操作
# 撤销工作区修改(未add)
git checkout -- <file-name># 撤销暂存区修改(已add)
git reset HEAD <file-name># 撤销提交(保留更改在工作区)
git reset --soft HEAD~1# 撤销提交(保留更改在暂存区)
git reset --mixed HEAD~1 # 默认选项# 彻底撤销提交(丢弃更改)
git reset --hard HEAD~1# 恢复特定提交
git revert <commit-hash># 恢复丢失的提交(通过reflog)
git reflog
git reset --hard <commit-hash-from-reflog>
7. 储藏与清理
# 储藏当前更改
git stash# 储藏包括未跟踪文件
git stash -u# 查看储藏列表
git stash list# 恢复最近储藏
git stash apply# 恢复指定储藏
git stash apply stash@{n}# 删除储藏
git stash drop stash@{n}# 恢复并删除储藏
git stash pop# 清理未跟踪文件
git clean -n # 预览将被删除的文件
git clean -f # 删除未跟踪文件
git clean -fd # 删除未跟踪文件和目录
8. 标签管理
# 列出标签
git tag# 创建轻量标签
git tag <tag-name># 创建附注标签
git tag -a <tag-name> -m "tag message"# 查看标签详情
git show <tag-name># 删除标签
git tag -d <tag-name># 推送标签到远程
git push <remote-name> <tag-name># 推送所有标签
git push <remote-name> --tags# 删除远程标签
git push <remote-name> :refs/tags/<tag-name>
9. 子模块管理
# 添加子模块
git submodule add <repository-url> <path># 克隆包含子模块的项目
git clone <repository-url>
git submodule init
git submodule update# 或者一步完成
git clone --recurse-submodules <repository-url># 更新子模块
git submodule update --remote
10. 高级操作
# 交互式暂存
git add -i# 交互式变基
git rebase -i HEAD~n# 二分查找引入bug的提交
git bisect start
git bisect bad
git bisect good <commit-hash>
# 测试后标记当前提交为good或bad
git bisect reset # 结束二分查找# 重写提交历史(谨慎使用)
git filter-branch
四、Git最佳实践
- 提交规范:
-
- 提交信息要清晰明确
- 遵循约定式提交(Conventional Commits)
- 示例:
feat: 添加用户登录功能
或fix: 修复登录页面样式问题
- 分支策略:
-
- 主分支(master/main)保持稳定
- 功能开发使用feature分支
- 修复bug使用hotfix分支
- 长期维护使用release分支
- 工作流程:
-
- 频繁提交,小步前进
- 一个提交只做一件事
- 提交前检查更改
git diff
- 定期从上游拉取更新
- .gitignore文件:
-
- 忽略不需要版本控制的文件(如日志、构建产物等)
示例内容:
-
- text
*.log
node_modules/
.DS_Store
*.exe
五、常见问题解决
- 冲突解决:
-
- 发生冲突时,Git会在文件中标记冲突部分
- 手动编辑文件解决冲突
- 使用
git add
标记冲突已解决 - 完成合并
git commit
- 撤销公共历史:
-
- 避免对已推送的历史进行
reset --hard
- 使用
git revert
创建反向提交
- 避免对已推送的历史进行
- 大文件处理:
-
- 使用Git LFS管理大文件
- 避免将二进制文件加入Git
- 凭证存储:
-
- 使用SSH密钥避免每次输入密码
或配置凭证存储:
-
- bashgit config --global credential.helper store
六、可视化工具推荐
- Git GUI客户端:
-
- GitHub Desktop
- Sourcetree
- GitKraken
- Tower
- IDE集成:
-
- VS Code Git集成
- IntelliJ IDEA Git工具
- Eclipse EGit
- 在线工具:
-
- GitHub
- GitLab
- Bitbucket
结语
Git是一个功能强大且灵活的工具,本文介绍的只是最常用的命令和操作。随着使用经验的积累,你会逐渐发现更多高级用法来提高工作效率。记住,Git的核心思想是记录项目的历史变化,而不是简单地保存当前状态。掌握Git不仅能帮助你更好地管理代码,还能让你在团队协作中游刃有余。