更新 Git操作指南与常见问题
@@ -0,0 +1,374 @@
|
|||||||
|
# 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
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
powershell
|
||||||
|
# 修复输入编码
|
||||||
|
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new()
|
||||||
|
|
||||||
|
# 然后执行
|
||||||
|
$getCred = @"
|
||||||
|
protocol=https
|
||||||
|
host=git.youzhilian.cn
|
||||||
|
|
||||||
|
"@
|
||||||
|
$getCred | git credential fill
|
||||||
|
```
|
||||||
|
|
||||||
|
执行后,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