首页 / 知识库 / 0基础入门-阅读资料 / 0基础-git入门

第七章:常见问题与实用技巧

← 上一章:在 Cursor / VS Code 中使用 Git | 返回目录 | 下一章:Git 工作流速查表 →


7.1 .gitignore 文件

在项目中,有些文件是不需要被 Git 管理的,比如:

  • 依赖包文件夹(node_modules/venv/)—— 太大了,别人可以自己安装
  • 环境变量文件(.env)—— 含有密码等敏感信息
  • 编译产物(__pycache__/.pyc)—— 可以自动生成
  • 系统文件(.DS_StoreThumbs.db)—— 和项目无关

创建方法:

在项目根目录下新建一个名为 .gitignore 的文件(注意文件名以点开头),写入需要忽略的规则:

# Python 相关
__pycache__/
*.pyc
venv/
.env

# Node.js 相关
node_modules/

# IDE 相关
.vscode/
.idea/

# 系统文件
.DS_Store
Thumbs.db

# 日志文件
*.log

规则说明

  • # 开头的行是注释
  • 文件夹名/ 忽略整个文件夹
  • *.pyc 忽略所有以 .pyc 结尾的文件
  • 只对还没有被 Git 跟踪的文件有效。如果文件已经被提交过了,需要先用 git rm --cached 文件名 取消跟踪

推荐做法:每个项目在第一次提交时就创建 .gitignore 文件。


7.2 撤销操作

场景命令说明
修改了文件,想恢复原样git restore 文件名丢弃工作区的修改
已经 add 了,想取消暂存git restore --staged 文件名从暂存区移出,修改内容保留
已经 commit 了,想改提交说明git commit --amend -m "新说明"修改最近一次的提交信息
已经 commit 了,想撤销这次提交git reset --soft HEAD~1撤销提交,修改内容回到暂存区

示例:

# 不小心改错了文件,想恢复到上一次提交的状态
git restore app.py

# add 了不该 add 的文件,取消暂存
git restore --staged secret.env

# 提交信息写错了
git commit --amend -m "正确的提交说明"

注意git restore 文件名 会丢失你的修改,操作前确认一下。


7.3 版本回退

如果你想回到之前的某个版本:

第一步:找到目标版本的 ID

git log --oneline

输出:

c3d4e5f 第三次提交:添加app.py
b2c3d4e 第二次提交:补充项目说明
a1b2c3d 第一次提交:添加README

第二步:回退

# 回到指定版本(谨慎:会丢失之后的所有修改)
git reset --hard b2c3d4e

后悔了?还能找回来!

# 查看所有操作记录(包括已经"消失"的提交)
git reflog

# 找到想恢复的版本ID,再 reset 回去
git reset --hard c3d4e5f

git reflog 是你的”后悔药”,只要没有超过 90 天,几乎所有操作都能找回。


7.4 常见报错与解决

1. fatal: not a git repository

原因:你当前所在的文件夹不是一个 Git 仓库。

解决:确认你 cd 到了正确的项目目录。或者用 git init 初始化。

cd my-project   # 进入项目目录
git status       # 再试试

2. error: failed to push some refs to ...

原因:远程仓库有更新(比如队友推了新代码),你本地没同步。

解决:先拉取再推送。

git pull
git push

如果 pull 时遇到冲突,解决冲突后再 push。

3. fatal: remote origin already exists

原因:你已经设置过远程仓库地址了。

解决:如果想更换地址:

git remote set-url origin 新的仓库地址

4. 中文文件名显示为乱码(如 \xxx\xxx

解决

git config --global core.quotepath false

5. Please tell me who you are

原因:还没配置用户名和邮箱。

解决

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

6. Windows 下换行符警告 LF will be replaced by CRLF

解决(消除警告)

git config --global core.autocrlf true

← 上一章:在 Cursor / VS Code 中使用 Git | 返回目录 | 下一章:Git 工作流速查表 →