跳转到内容

git 问题记录

  1. 首先确保本地 git 配置启用大小写敏感

    • git 默认情况下对文件名大小写不敏感
    Terminal window
    $ git config --global core.ignorecase false
    $ git config --local core.ignorecase false
    # 查询状态
    $ git config --get core.ignorecase
    $ git config --local --get core.ignorecase
  2. 使用 git mv 命令进行重命名 (假设要将 demo 改为 Demo)

    Terminal window
    # 先改成临时名称
    $ git mv filename demo.tmp
    # 再改成目标名称
    $ git mv demo.tmp Filename
    • 针对文件已经提交过(线上大小写同时存在),需要清除缓存再提交
    Terminal window
    # 移除要删除的文件缓存
    $ git rm --cached filename

场景:代码回滚导致本地与远程版本不一致,无法直接拉取远程仓库

Terminal window
# 检出远程所有分支最新数据
$ git fetch --all
$ git reset --hard origin/main # 丢弃本地

场景:误删除了本地 git 项目的 .git 目录

Terminal window
$ git init
$ git remote add origin <origin_url>
$ git fetch
$ git reset --hard origin/main # 丢弃本地
$ git branch --set-upstream-to=origin/main main # 设置上游跟踪
# 等价于
$ git checkout -B main origin/main
Terminal window
$ git config --global http.sslVerify "false"
  • 代码有进行 commit 操作
Terminal window
# 回滚上一个版本(删除工作空间的改动代码,撤销 commit 且撤销 add)
$ git reset --hard HEAD^
# 如何恢复删除的代码
$ git reflog
$ git reset --hard [hash]
  • 代码没有 commit 操作,可借助 vscode timeline 功能
Terminal window
# pull 和 push 同时存在
$ git pull --rebase
$ git rebase --continue
# 撤销 rebase 操作
$ git rebase --abort
Terminal window
# 场景:将 feature 分支的改动合并到 main 分支
# 1. 切换到 main 分支
$ git checkout main
# 2. 将 feature 的提交变基到 main 分支上
$ git rebase feature