git 问题记录
文件名大小写修改不生效
Section titled “文件名大小写修改不生效”Git 在 macOS / Windows 上默认对文件名大小写不敏感,直接改文件名往往不会被识别为变更。
-
开启大小写敏感(建议只在当前仓库设置,避免影响其他项目)
Terminal window $ git config --local core.ignorecase false# 查看当前配置(false 表示敏感)$ git config --get core.ignorecase -
用
git mv两步重命名(以demo→Demo为例)Terminal window $ git mv demo demo.tmp # 先改为临时名$ git mv demo.tmp Demo # 再改为目标名 -
若目标大小写版本已经存在于远程(历史遗留),需先清除旧索引再提交
Terminal window $ git rm --cached demo # 移除旧名称的缓存记录$ git add Demo$ git commit -m "fix: rename demo to Demo"
强制与远程仓库保持一致
Section titled “强制与远程仓库保持一致”$ git fetch --all$ git reset --hard origin/main # 将本地 main 重置为远程最新状态重新关联本地项目到远程仓库
Section titled “重新关联本地项目到远程仓库”-
在现有代码目录重新初始化,并关联远程地址
Terminal window $ git init$ git remote add origin <origin-url>$ git fetch -
以远程
main为准建立本地分支(会覆盖本地与远程不一致的内容)Terminal window $ git checkout -B main origin/main# 等价写法:# git reset --hard origin/main# git branch --set-upstream-to=origin/main main
关闭 Git SSL 证书验证
Section titled “关闭 Git SSL 证书验证”$ git config --global http.sslVerify false误操作回滚后如何恢复
Section titled “误操作回滚后如何恢复”情况一:改动已经 commit 过
# 查看所有 HEAD 变动记录(含已被 reset 的提交)$ git reflog
# 恢复到目标 commit(将 <commit> 替换为 reflog 中的 hash)$ git reset --hard <commit>情况二:改动尚未 commit
本地工作区文件被覆盖或未保存时,可借助编辑器的历史记录功能恢复,例如 VS Code 的 Timeline 面板查看文件本地历史版本。
pull / push 冲突
Section titled “pull / push 冲突”# 先拉取远程变更,并将本地提交变基到远程之上$ git pull --rebase
# 若有冲突:手动解决后$ git add .$ git rebase --continue
# 若要放弃本次 rebase,回到操作前状态$ git rebase --abortgit merge 时避免产生合并节点
Section titled “git merge 时避免产生合并节点”-
切换到
feature分支,将其变基到test之上Terminal window $ git checkout feature$ git rebase test- 若出现冲突:解决冲突后执行
git rebase --continue - 若要放弃变基:执行
git rebase --abort
- 若出现冲突:解决冲突后执行
-
切回
test分支,快进合并featureTerminal window $ git checkout test$ git merge feature此时
feature已在test之上,merge为快进(fast-forward),不会生成合并节点。