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 GUIVSCode Git 面板也能更高效地管理项目。

posted @ 2025-06-13 15:57  迪杰Tesla  阅读(45)  评论(0)    收藏  举报