本地修改无法提交,提示冲突
改完代码想提交,结果一执行 git commit 就弹出一堆红色文字,说有冲突。这种情况太常见了,尤其是团队协作时,别人先你一步 push 了代码。这时候不能硬来,得先处理合并。
打开终端,运行:
git pull origin main如果提示冲突,去编辑器里找到标红的文件,手动删掉 <<<<<<<、=====>、>>>>>>> 这些标记,保留需要的代码段。改完再 add 和 commit,就能正常提交了。
误删文件,git status 看不到踪影
手滑把某个配置文件删了,git status 却显示 nothing to commit,心里一紧。其实 Git 默认不会追踪删除动作,除非你明确告诉它。
这时候用:
git checkout HEAD -- 文件名能把文件从上一次提交中恢复回来。要是已经 commit 过但被后来的提交覆盖了,就得用 git log 找到之前的 commit ID,再用 reset 或 checkout 恢复指定版本。
push 被拒,提示非快进更新
写完功能兴冲冲 push,结果报错 non-fast-forward,不让传。这是因为远程分支有新提交,你的本地落后了。
别急着强制推送,先拉取最新代码:
git pull --rebase origin main加上 --rebase 参数可以把你的改动“挪”到最新提交后面,避免产生多余的合并节点。如果没问题,接着 push 就行了。
提交信息写错了,想改又不敢乱动
刚提交完发现注释拼错单词,或者漏写了任务编号。别慌,如果还没 push,直接改最后一次提交:
git commit --amend -m "新提交信息"这样既改了信息,又不会多出一条记录。但如果已经 push 了,就得重新提交一次修正,然后 force push(仅限个人分支)。
不小心把敏感信息提交上去了
比如数据库密码、API 密钥这类东西,一旦进 Git 历史就很难彻底清除。就算删了文件,别人还能通过旧提交挖出来。
紧急处理可以用 git rebase 删除包含敏感内容的提交:
git rebase -i HEAD~3选中对应提交删掉,保存退出。之后 force push 强制同步远程。更彻底的做法是用 BFG Repo-Cleaner 工具清理整个历史记录,并通知团队成员重新克隆仓库。
切换分支失败,提示文件会丢失更改
正在改代码,突然要切到别的分支修 bug,结果系统警告:“Your local changes would be overwritten”。不想提交半成品,也不想丢掉当前进度。
用这条命令把临时改动“藏”起来:
git stash切完分支干活完再回来,执行:
git stash pop之前的工作就原样恢复了,像没离开过一样。