Git常见操作:从入门到日常工作流
Git常见操作大全:从入门到日常工作流
Git 是当今最流行的分布式版本控制系统之一,掌握它是每位开发者的必修课。本文将整理 Git 最常用的操作命令,帮助你快速掌握日常开发中需要用到的技能。
一、基础配置
安装 Git 后,建议先进行以下全局配置:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "code --wait"   # 使用 VSCode 作为默认编辑器(可选)
查看当前配置:
git config --list
二、项目初始化与克隆
初始化本地仓库
git init
在当前文件夹创建一个新的 Git 仓库。
克隆远程仓库
git clone https://github.com/用户名/项目名.git
复制远程项目到本地,包含所有历史记录。
三、常用操作
添加文件到暂存区
git add 文件名
git add .         # 添加所有修改
提交更改
git commit -m "提交说明"
组合操作(跳过 add):
git commit -am "说明"
四、查看状态与日志
git status      # 查看当前状态
git log         # 查看提交历史
git log --oneline --graph --all   # 简洁图形化查看
五、分支管理
创建分支
git branch 分支名
切换分支
git checkout 分支名
或用新写法(推荐):
git switch 分支名
创建并切换新分支
git checkout -b 分支名
# 或
git switch -c 分支名
合并分支
git merge 分支名
将指定分支合并到当前分支。
删除分支
git branch -d 分支名    # 删除已合并分支
git branch -D 分支名    # 强制删除
六、远程操作
添加远程仓库
git remote add origin https://github.com/用户名/项目名.git
推送本地分支到远程
git push origin 分支名
第一次推送建议加上 -u:
git push -u origin 分支名
拉取远程更新
git pull
七、撤销与恢复
撤销修改(未加入暂存区)
git checkout -- 文件名
取消已暂存的文件
git reset HEAD 文件名
回退提交(保留修改)
git reset --soft HEAD^
回退提交(取消修改)
git reset --hard HEAD^
小贴士:HEAD^ 表示上一个提交,HEAD~2 表示往前两次。
八、标签管理
git tag           # 查看所有标签
git tag v1.0      # 创建标签
git push origin v1.0  # 推送标签
git tag -d v1.0   # 删除本地标签
git push origin --delete tag v1.0  # 删除远程标签
九、常见问题解决
- 
合并冲突:Git 会标记冲突文件,需手动修改后重新提交。 
- 
忘记添加 .gitignore?补上后删除缓存即可:
git rm -r --cached .
git add .
git commit -m "添加 .gitignore"
十、补充Git Rebase
git rebase 是一种改变提交历史的方式,常用于让本地分支的提交“平铺”在主干分支之上,保持提交历史线性、清晰。
什么是 git rebase?
简而言之:
rebase会“重新播放”当前分支的提交,把它们挪到目标分支的最新位置上,就像把自己的修改“贴在”最新代码之后。
对比如下:
- 
使用 merge合并分支,会保留分叉历史,可能造成提交历史混乱。
- 
使用 rebase,会让历史看起来像一条直线,适合代码审查和协作。
基本语法
git rebase 目标分支
通常使用
git checkout feature
git rebase main
意思是:把当前分支feature 的提交重新应用到 main 最新提交之后。
常见场景
✅ 场景 1:保持分支更新、提交历史清晰
git checkout my-feature
git fetch origin
git rebase origin/main
目的:将 feature 分支基于最新的 main 分支重放,避免 merge commit 污染提交历史。
✅ 场景 2:本地多个提交压缩成一个(交互式 rebase)
git rebase -i HEAD~3
这将打开一个编辑器窗口:
pick e3a1b72 添加登录功能
pick 4c9d09d 修改样式
pick d6a7f3a 修复 bug
你可以把 pick 改成 squash:
pick e3a1b72 添加登录功能
squash 4c9d09d 修改样式
squash d6a7f3a 修复 bug
保存后再编辑合并后的提交信息。
解决冲突
如果在rebase过程中出现了冲突问题,可以通过编辑冲突文件的方式,手动解决冲突问题:
# 1. 编辑冲突的文件,手动解决冲突
# 2. 添加修改
git add 冲突文件
# 3. 继续 rebase
git rebase --continue
中断 rebase:
git rebase --abort
与 merge 对比图
 td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}
| 操作 | 提交历史 | 是否创建合并提交 | 推荐使用场景 | 
| merge | 保留分支结构 | 是 | 公共分支合并、多人协作 | 
| rebase | 历史线性化 | 否 | 本地开发、提交整理、PR 前清理 | 
图解rebase与merge
假设现在有一个仓库的分支情况如下所示:
使用 merge 的历史

采用git merge 将功能分支和主分支一起进行了合并,最后得到G'
使用 rebase 的历史

Git rebase 将功能分支历史移动到了主分支的头部,为功能分支中的每个提交创建新的提交E’、F’ 和 G’。
快捷操作总结
td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}| 操作 | 说明 | 
| git rebase main | 把当前分支的提交“移到” main 分支最新提交之后 | 
| git rebase -i HEAD~n | 交互式压缩最近 n 次提交 | 
| git rebase --continue | 解决冲突后继续 | 
| git rebase --abort | 放弃 rebase 操作 | 
十一、.gitignore 文件详解:忽略不该提交的文件
.gitignore是 Git 项目中用于排除临时文件、配置文件、构建产物等不应加入版本控制的机制。设置得当能避免无关文件污染项目仓库。
🧾 1. 什么是 .gitignore?
.gitignore 是一个文本文件,告诉 Git 哪些文件或文件夹 不应被跟踪(track)和提交(commit)。
例如:
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 文件夹
node_modules/
# 忽略临时文件
*.tmp
*.swp
# 忽略 Mac 系统文件
.DS_Store
🧰 2. 常用规则语法
td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}| 规则 | 含义 | 
| *.log | 忽略所有 .log 文件 | 
| temp/ | 忽略 temp 文件夹及其所有内容 | 
| !important.txt | 不忽略 important.txt(即使上面通配规则会忽略) | 
| **/debug.log | 忽略所有子目录中的 debug.log 文件 | 
| /secret.env | 忽略项目根目录下的 secret.env,但不影响子目录中同名文件 | 
📌 3. 示例:不同项目中的常见忽略项
✅ Node.js 项目
node_modules/
dist/
.env
npm-debug.log
✅ Python 项目
__pycache__/
*.py[cod]
.env
venv/
✅ Java 项目
*.class
target/
.idea/
*.iml
✅ VSCode 用户
.vscode/
📦 4. 推荐做法
- 
创建 .gitignore时机:在运行git init前或首次 commit 前设置好。
- 
对于新项目,推荐使用 GitHub 官方的 .gitignore 模板库: 👉 https://github.com/github/gitignore
❗ 5. 添加 .gitignore 后文件依旧被追踪?
.gitignore 只能影响 未被 Git 跟踪的文件。如果你之前已经 git add 过文件,那么即使加了 .gitignore,Git 仍会追踪它。
解决方法:
# 清除缓存,重新索引
git rm -r --cached .
git add .
git commit -m "更新 .gitignore 规则"
🧠 6. 额外建议
- 
使用通配符灵活管理文件:如 *.log、**/build/
- 
不建议把 .env、API 密钥、数据库配置等提交到 Git 仓库中!
- 
多人协作项目建议共享 .gitignore文件,统一团队忽略规则
✅ 总结:.gitignore 是项目整洁的第一步
合理配置 .gitignore 能让项目:
- 
提交历史干净 
- 
安全地排除敏感或大文件 
- 
更容易在不同机器上克隆和运行 
📎 想要我根据你使用的语言或框架生成 .gitignore 文件模板(如 React、Django、Spring Boot 等)?告诉我即可,我可以一键帮你生成完整配置。
是否还需要加入 .gitkeep 说明(用于空文件夹保留)?
十二、总结
掌握 Git 不需要记住所有命令,但熟练掌握这些常用操作,足以应对绝大多数开发场景。建议结合实际项目,多练多用,借助如 Git GUI 或 VSCode Git 面板也能更高效地管理项目。
本文来自博客园,作者:迪杰Tesla,转载请注明原文链接:https://www.cnblogs.com/medcs/articles/18927235


 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号