这页更适合排查问题。命令使用前先确认当前分支、远程地址和工作区状态。

一直提示没有权限

常见原因:

  • 没有配置 SSH key。
  • 当前 SSH key 没有添加到 GitHub、Gitee 或 GitLab。
  • 远程地址写成了没有权限的仓库。
  • 使用了 HTTPS 地址,但账号或 Token 失效。

排查命令:

1
2
3
git remote -v
ssh -T git@github.com
ssh -T git@gitee.com

如果项目应该使用 SSH,可以把远程地址改为 SSH 格式:

1
git remote set-url origin git@github.com:owner/repo.git

推送时提示 upstream 不存在

新分支第一次推送需要建立本地分支和远程分支的关联:

1
git push -u origin feature-name

后续同一个分支可以直接:

1
git push

合并冲突怎么办

先查看冲突文件:

1
git status

打开冲突文件后,Git 会用标记隔开双方改动:

1
2
3
4
5
<<<<<<< HEAD
当前分支内容
=======
合入分支内容
>>>>>>> feature-name

处理方式:

  1. 理解两边改动分别解决什么问题。
  2. 编辑成最终需要保留的内容。
  3. 删除冲突标记。
  4. 重新暂存并提交。
1
2
git add path/to/file
git commit

提交错文件怎么办

如果还没有提交,可以取消暂存:

1
git restore --staged path/to/file

如果文件内容也不想保留,可以恢复工作区文件:

1
git restore path/to/file

如果已经提交,但还没有推送,可以重新整理最近一次提交:

1
git reset --soft HEAD~1

如果已经推送到共享分支,建议新增一个修复提交,不要随意改公共历史。

本地分支落后远程怎么办

先拉取远程信息:

1
git fetch origin

查看差异:

1
2
git log --oneline HEAD..origin/main
git log --oneline origin/main..HEAD

确认后再合并或变基:

1
git pull

团队协作中,如果不确定该用 merge 还是 rebase,优先使用团队约定。

文件换行符总是变化

跨 Windows、macOS、Linux 协作时,换行符可能造成大量无意义差异。

可以在仓库中增加 .gitattributes:

1
* text=auto

也可以按项目类型细分:

1
2
*.sh text eol=lf
*.bat text eol=crlf

文件权限总是变化

如果 git status 反复出现文件权限变化,可以查看:忽略文件权限变化。

提交信息怎么写

提交信息应说明改动完成了什么,而不是描述执行了哪些编辑动作。常见格式是“类型 + 简短结果”:

1
2
3
feat: add order export
fix: prevent duplicate payment callback
docs: update deployment guide

一次提交尽量只表达一个完整意图。修复冲突或误提交时,也应在提交信息中说明最终处理结果。

站内搜索

没有找到内容!