docs: 添加Git操作指南与常见问题
+360
@@ -0,0 +1,360 @@
|
||||
# Git 操作指南与常见问题
|
||||
|
||||
本指南面向本项目(spanish-diary)的开发人员,说明日常更新提交、Gitea 令牌、Windows 凭据管理以及常见 Git 问题的处理方法。
|
||||
|
||||
## 1. 项目仓库信息
|
||||
|
||||
```text
|
||||
主仓库:https://git.youzhilian.cn/guoqingshan/spanish-diary.git
|
||||
Wiki 仓库:https://git.youzhilian.cn/guoqingshan/spanish-diary.wiki.git
|
||||
主分支:main
|
||||
```
|
||||
|
||||
项目目录:
|
||||
|
||||
```text
|
||||
C:\Users\Administrator\Documents\Codex\2026-07-30\build-web-apps-plugin-build-web\spanish-diary
|
||||
```
|
||||
|
||||
执行 Git 操作前,请先进入项目目录:
|
||||
|
||||
```powershell
|
||||
cd C:\Users\Administrator\Documents\Codex\2026-07-30\build-web-apps-plugin-build-web\spanish-diary
|
||||
```
|
||||
|
||||
## 2. 日常更新与提交
|
||||
|
||||
### 2.1 查看状态
|
||||
|
||||
```powershell
|
||||
git status
|
||||
```
|
||||
|
||||
`M` 表示已修改,`??` 表示未跟踪的新文件。
|
||||
|
||||
### 2.2 暂存文件
|
||||
|
||||
提交全部修改:
|
||||
|
||||
```powershell
|
||||
git add -A
|
||||
```
|
||||
|
||||
只提交指定文件:
|
||||
|
||||
```powershell
|
||||
git add app.js translate.js
|
||||
```
|
||||
|
||||
### 2.3 提交
|
||||
|
||||
```powershell
|
||||
git commit -m "feat: 增加新功能"
|
||||
```
|
||||
|
||||
常用提交信息前缀:
|
||||
|
||||
```text
|
||||
feat: 新功能
|
||||
fix: 修复问题
|
||||
docs: 文档更新
|
||||
style: 样式调整
|
||||
refactor: 代码重构
|
||||
test: 测试
|
||||
chore: 其他维护
|
||||
```
|
||||
|
||||
### 2.4 推送到远程
|
||||
|
||||
```powershell
|
||||
git push origin main
|
||||
```
|
||||
|
||||
如果本地分支已经跟踪远程分支,可以直接:
|
||||
|
||||
```powershell
|
||||
git push
|
||||
```
|
||||
|
||||
### 2.5 拉取远程更新
|
||||
|
||||
```powershell
|
||||
git pull origin main
|
||||
```
|
||||
|
||||
### 2.6 查看提交历史
|
||||
|
||||
```powershell
|
||||
git log --oneline
|
||||
```
|
||||
|
||||
## 3. 撤销与修改提交
|
||||
|
||||
### 3.1 撤销暂存
|
||||
|
||||
```powershell
|
||||
git restore --staged 文件名
|
||||
```
|
||||
|
||||
### 3.2 丢弃工作区修改
|
||||
|
||||
```powershell
|
||||
git restore 文件名
|
||||
```
|
||||
|
||||
> 注意:此操作不可恢复,请确认后再执行。
|
||||
|
||||
### 3.3 修改上一次提交信息
|
||||
|
||||
```powershell
|
||||
git commit --amend -m "新的提交信息"
|
||||
```
|
||||
|
||||
### 3.4 撤销最近一次提交但保留修改
|
||||
|
||||
```powershell
|
||||
git reset --soft HEAD~1
|
||||
```
|
||||
|
||||
## 4. 配置提交者信息
|
||||
|
||||
### 4.1 全局配置
|
||||
|
||||
```powershell
|
||||
git config --global user.name "你的名字"
|
||||
git config --global user.email "你的邮箱"
|
||||
```
|
||||
|
||||
### 4.2 当前仓库配置
|
||||
|
||||
```powershell
|
||||
git config user.name "guoqingshan"
|
||||
git config user.email "704299375@qq.com"
|
||||
```
|
||||
|
||||
### 4.3 查看当前配置
|
||||
|
||||
```powershell
|
||||
git config --list
|
||||
```
|
||||
|
||||
## 5. 创建 Gitea 访问令牌
|
||||
|
||||
1. 登录 Gitea 网站。
|
||||
2. 进入右上角用户头像,打开 **用户设置**。
|
||||
3. 左侧选择 **应用**。
|
||||
4. 在“生成新的令牌”区域填写令牌名称,例如 `spanish-diary-push`。
|
||||
5. 根据需要选择权限,推送代码通常需要:
|
||||
|
||||
```text
|
||||
write:repository
|
||||
```
|
||||
|
||||
6. 点击 **生成令牌**。
|
||||
7. **立即复制并保存令牌**,关闭页面后将无法再次查看。
|
||||
|
||||
令牌格式示例:
|
||||
|
||||
```text
|
||||
cfa2f2cb9a1a01283bae9586cd42fa0518e0a4dc
|
||||
```
|
||||
|
||||
> 安全提醒:令牌等同于密码,不要提交到仓库、聊天记录或公开文档中。
|
||||
|
||||
## 6. 将令牌存入 Windows 凭据管理器
|
||||
|
||||
### 6.1 检查 Git 凭据管理器
|
||||
|
||||
```powershell
|
||||
git config --global credential.helper
|
||||
```
|
||||
|
||||
正常应显示:
|
||||
|
||||
```text
|
||||
manager
|
||||
```
|
||||
|
||||
### 6.2 写入令牌
|
||||
|
||||
在 PowerShell 中执行:
|
||||
|
||||
```powershell
|
||||
$cred = "protocol=https`nhost=git.youzhilian.cn`nusername=guoqingshan`npassword=你的令牌`n"
|
||||
$cred | git credential approve
|
||||
```
|
||||
|
||||
执行后,Git Credential Manager 会把令牌加密保存到 Windows 凭据管理器。
|
||||
|
||||
### 6.3 使用干净地址推送
|
||||
|
||||
```powershell
|
||||
git remote set-url origin https://git.youzhilian.cn/guoqingshan/spanish-diary.git
|
||||
git push origin main
|
||||
```
|
||||
|
||||
推送时会自动从凭据管理器读取令牌,不需要把令牌写进 URL。
|
||||
|
||||
## 7. 查看和删除 Windows 凭据
|
||||
|
||||
### 7.1 查看
|
||||
|
||||
```powershell
|
||||
cmdkey /list | findstr git.youzhilian.cn
|
||||
```
|
||||
|
||||
也可以查看所有凭据:
|
||||
|
||||
```powershell
|
||||
cmdkey /list
|
||||
```
|
||||
|
||||
### 7.2 删除
|
||||
|
||||
```powershell
|
||||
cmdkey /delete:git:https://git.youzhilian.cn
|
||||
```
|
||||
|
||||
删除后,下次推送会要求重新提供用户名和令牌。
|
||||
|
||||
## 8. 常见问题与解决办法
|
||||
|
||||
### 8.1 fatal: not a git repository
|
||||
|
||||
原因:当前目录不是 Git 仓库。
|
||||
|
||||
解决:
|
||||
|
||||
```powershell
|
||||
cd C:\Users\Administrator\Documents\Codex\2026-07-30\build-web-apps-plugin-build-web\spanish-diary
|
||||
git status
|
||||
```
|
||||
|
||||
### 8.2 Authentication failed
|
||||
|
||||
原因:令牌失效、密码错误或凭据过期。
|
||||
|
||||
解决:
|
||||
|
||||
```powershell
|
||||
git credential approve
|
||||
```
|
||||
|
||||
重新写入新令牌,或先在 Gitea 中撤销旧令牌并生成新令牌。
|
||||
|
||||
### 8.3 fatal: remote origin already exists
|
||||
|
||||
原因:远程地址已经存在。
|
||||
|
||||
解决:不要重复添加,改用设置:
|
||||
|
||||
```powershell
|
||||
git remote set-url origin https://git.youzhilian.cn/guoqingshan/spanish-diary.git
|
||||
```
|
||||
|
||||
### 8.4 Everything up-to-date
|
||||
|
||||
原因:本地没有新的提交。
|
||||
|
||||
解决:先提交再推送:
|
||||
|
||||
```powershell
|
||||
git add -A
|
||||
git commit -m "feat: 新提交"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 8.5 push rejected:非快速前进
|
||||
|
||||
原因:远程分支有新提交,本地落后。
|
||||
|
||||
解决:
|
||||
|
||||
```powershell
|
||||
git pull origin main --rebase
|
||||
```
|
||||
|
||||
如果出现冲突,解决冲突后继续:
|
||||
|
||||
```powershell
|
||||
git add -A
|
||||
git rebase --continue
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 8.6 LF will be replaced by CRLF
|
||||
|
||||
原因:Windows 和 Linux 换行符不同。
|
||||
|
||||
解决:可以接受该提示;也可以在仓库根目录添加 `.gitattributes`:
|
||||
|
||||
```text
|
||||
* text=auto
|
||||
*.js text eol=lf
|
||||
*.html text eol=lf
|
||||
*.css text eol=lf
|
||||
```
|
||||
|
||||
### 8.7 Author identity unknown
|
||||
|
||||
原因:没有配置用户名和邮箱。
|
||||
|
||||
解决:
|
||||
|
||||
```powershell
|
||||
git config user.name "guoqingshan"
|
||||
git config user.email "704299375@qq.com"
|
||||
```
|
||||
|
||||
### 8.8 合并冲突
|
||||
|
||||
原因:两边修改了同一个文件的同一区域。
|
||||
|
||||
解决:
|
||||
|
||||
1. 查看冲突文件:
|
||||
|
||||
```powershell
|
||||
git status
|
||||
```
|
||||
|
||||
2. 手动保留正确内容,删除冲突标记。
|
||||
3. 标记已解决:
|
||||
|
||||
```powershell
|
||||
git add -A
|
||||
git commit -m "merge: 解决冲突"
|
||||
```
|
||||
|
||||
### 8.9 提交到了 master,但远程是 main
|
||||
|
||||
解决:
|
||||
|
||||
```powershell
|
||||
git branch -M main
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
### 8.10 想查看远程地址
|
||||
|
||||
```powershell
|
||||
git remote -v
|
||||
```
|
||||
|
||||
### 8.11 文件被其他程序占用
|
||||
|
||||
Windows 下如果 Git 报文件被占用,先关闭正在编辑该文件的编辑器或开发工具,再重试。
|
||||
|
||||
## 9. 推荐日常流程
|
||||
|
||||
```powershell
|
||||
cd 项目目录
|
||||
git pull origin main
|
||||
git status
|
||||
# 修改代码
|
||||
git add -A
|
||||
git commit -m "feat: 描述本次修改"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
每次推送前先拉取,可以减少冲突。
|
||||
Reference in New Issue
Block a user