git 是目前世界上最流行的分布式版本控制系统。无论是个人开发还是团队协作,掌握 git 都是程序员的必备技能。本文将从安装配置、基础操作到分支管理与团队协作,系统地讲解 git 的详细用法。
一、git 简介与安装
git 由 linus torvalds 于 2005 年创建,用于 linux 内核的版本管理。它的核心特点是分布式:每个开发者本地都有一份完整的代码仓库历史,即使没有网络也能提交、查看历史。
安装 git
- windows:下载官方安装包,或使用
winget install --id git.git - macos:
brew install git - linux (ubuntu/debian):
sudo apt install git
安装后验证:
git --version
二、初始配置
首次使用 git 必须配置用户名和邮箱,这些信息会记录在每次提交中:
git config --global user.name "你的名字" git config --global user.email "you@example.com"
查看配置:
git config --list
常用配置项:
# 设置默认分支名为 main git config --global init.defaultbranch main # 配置公钥对应的编辑器 git config --global core.editor vim # 配置代理(按需) git config --global http.proxy http://127.0.0.1:7890
三、基础操作
3.1 初始化仓库
mkdir myproject && cd myproject git init
这会生成一个隐藏的 .git 目录,里面存放所有版本历史。
3.2 工作区、暂存区与版本库
git 有三个核心区域:
- 工作区:你实际编辑的文件
- 暂存区(index/stage):暂存将要提交的修改
- 版本库(repository):已提交的历史记录
3.3 添加与提交
# 查看状态 git status # 添加文件到暂存区 git add main.py git add . # 添加所有修改 # 提交 git commit -m "初始化项目" # 添加并提交(只对已跟踪文件) git commit -am "修改了逻辑"
3.4 查看历史与差异
git log # 查看提交历史 git log --oneline # 简化显示 git log --graph # 图形化显示分支 git diff # 工作区与暂存区差异 git diff --staged # 暂存区与版本库差异 git show <commit> # 查看某次提交内容
四、回滚与撤销
# 撤销工作区修改,恢复到暂存区状态 git checkout -- file.txt # 取消暂存(保留工作区修改) git reset head file.txt # 回退到上一个版本(保留修改) git reset --soft head~1 # 回退并丢弃修改(谨慎使用) git reset --hard head~1 # 回退到指定提交 git reset --hard <commit-id> # 反提交(生成一次新的反向提交,适合已推送的分支) git revert <commit-id>
五、分支管理
分支是 git 最强大的功能之一,它允许你在不影响主分支的情况下并行开发。
# 查看分支 git branch git branch -a # 查看所有分支(含远程) # 创建分支 git branch feature-login # 切换分支 git checkout feature-login # 或创建并切换 git checkout -b feature-login # 合并分支 git checkout main git merge feature-login # 删除分支 git branch -d feature-login # 已合并可安全删除 git branch -d feature-login # 强制删除 # 变基(整理提交历史) git checkout feature git rebase main
合并与冲突
合并时若同一文件的同一位置被两边修改,会产生冲突。冲突标记形如:
<<<<<<< head 当前分支的内容 ======= 被合并分支的内容 >>>>>>> feature-login
手动解决冲突后:
git add 冲突文件 git commit -m "解决合并冲突"
六、远程仓库与 github
6.1 关联远程仓库
git remote add origin git@github.com:username/repo.git git remote -v # 查看远程 git remote remove origin # 移除远程
6.2 推送与拉取
# 第一次推送并关联上游 git push -u origin main # 之后直接推送 git push # 拉取远程更新并合并到当前分支 git pull # 只拉取不合并(先看再决定) git fetch
6.3 克隆仓库
git clone git@github.com:username/repo.git git clone -b dev git@github.com:username/repo.git # 克隆指定分支
6.4 ssh 密钥配置(免密推送)
ssh-keygen -t rsa -b 4096 -c "you@example.com" # 复制公钥 cat ~/.ssh/id_rsa.pub
将公钥粘贴到 github → settings → ssh and gpg keys → new ssh key。
七、tag 与版本发布
# 创建轻量标签 git tag v1.0.0 # 创建附注标签(推荐) git tag -a v1.0.0 -m "发布1.0版本" # 推送标签到远程 git push origin v1.0.0 # 推送所有标签 git push --tags # 删除标签 git tag -d v1.0.0 git push origin :refs/tags/v1.0.0 # 删除远程标签
八、git 常用技巧
8.1 .gitignore 忽略文件
创建 .gitignore 文件,写入不需要跟踪的内容:
# 依赖与构建产物 node_modules/ dist/ *.log # 环境变量与密钥 .env *.key
8.2 暂存(stash)临时保存
需要切换分支但不想提交当前修改时:
git stash # 保存现场 git stash list # 查看暂存列表 git stash pop # 恢复现场 git stash apply # 恢复但不删除记录
8.3 修改最近一次提交
git commit --amend -m "新的提交信息"
注意:--amend 会改写历史,仅适用于尚未推送的提交。
8.4 查看文件被谁修改
git blame file.txt
8.5 精简命令别名
git config --global alias.co checkout git config --global alias.br branch git config --global alias.st status git config --global alias.lg "log --oneline --graph --all"
配置后即可使用 git st、git lg 等快捷命令。
九、团队协作工作流
推荐最常见的 github flow 工作流:
- 从
main拉取最新代码:git pull origin main - 创建功能分支:
git checkout -b feature/xxx - 在功能分支上开发并提交
- 推送到远程:
git push -u origin feature/xxx - 在 github 上发起 pull request (pr)
- 代码评审通过后合并到
main - 删除已合并的功能分支
十、常见问题排查
| 问题 | 解决方案 |
|---|---|
| 提交信息写错 | git commit --amend |
| 文件误删 | git checkout -- 文件名 |
| 提交到了错误分支 | git reset 后重新 checkout |
| push 被拒绝(非快进) | 先 git pull --rebase 再 push |
| 忘记 .gitignore 已跟踪文件 | git rm --cached 文件名 |
总结
git 的核心思路可以概括为一句话:本地提交、远程协作、分支并行。初学者不必一次性掌握所有命令,只要熟练掌握 add、commit、push、pull、branch、merge 这一套基础流程,就能应对绝大多数开发场景。遇到问题多用 git status 和 git log 查看当前状态,配合 git help <命令> 查阅文档,很快就能熟练上手。
以上就是git安装与常用命令大全:基础操作、分支管理与远程仓库详解的详细内容,更多关于git安装与常用命令的资料请关注代码网其它相关文章!
发表评论