Files
ns2.0/GIT_GUIDE.md
2025-10-25 21:24:03 +08:00

506 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Git 推送教程
本文档教你如何将代码推送到 Git 仓库(以 Gitea 为例)。
---
## 📚 基础概念
### Git 工作流程
```
工作区 → 暂存区 → 本地仓库 → 远程仓库
↓ ↓ ↓ ↓
编辑文件 git add git commit git push
```
---
## 🚀 完整推送流程
### 1⃣ 查看文件状态
```bash
git status
```
**作用**: 查看哪些文件被修改、新增或删除
**输出示例**:
```
Changes not staged for commit:
modified: frontend/src/App.vue
Untracked files:
CHANGELOG.md
```
---
### 2⃣ 添加文件到暂存区
#### 添加所有文件
```bash
git add -A
```
```bash
git add .
```
#### 添加特定文件
```bash
git add frontend/src/App.vue
git add CHANGELOG.md
```
#### 添加特定目录
```bash
git add frontend/
git add backend/
```
**提示**: `-A` 会添加所有修改、新增和删除的文件
---
### 3⃣ 提交到本地仓库
```bash
git commit -m "提交说明"
```
#### 提交说明规范
**格式**: `类型: 简短描述`
**常用类型**:
- `feat`: 新功能
- `fix`: 修复bug
- `docs`: 文档更新
- `style`: 代码格式调整
- `refactor`: 重构代码
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 构建/工具相关
**示例**:
```bash
# 简单提交
git commit -m "feat: 添加用户登录功能"
# 详细提交(多行)
git commit -m "feat: 添加用户登录功能
- 实现登录表单
- 添加JWT认证
- 完善错误处理"
```
---
### 4⃣ 推送到远程仓库
```bash
git push origin main
```
**参数说明**:
- `origin`: 远程仓库名称(默认)
- `main`: 分支名称(也可能是 `master`
#### 首次推送
```bash
git push -u origin main
```
`-u` 参数会设置上游分支,之后只需 `git push` 即可
---
## 🔄 完整示例
### 场景1: 推送所有修改
```bash
# 1. 查看状态
git status
# 2. 添加所有文件
git add -A
# 3. 提交
git commit -m "feat: 完成首页重构"
# 4. 推送
git push origin main
```
### 场景2: 推送特定文件
```bash
# 1. 添加特定文件
git add frontend/src/App.vue
git add CHANGELOG.md
# 2. 提交
git commit -m "docs: 更新文档"
# 3. 推送
git push origin main
```
### 场景3: 修改上次提交
```bash
# 如果忘记添加某个文件
git add forgotten-file.txt
git commit --amend --no-edit
# 如果要修改提交信息
git commit --amend -m "新的提交信息"
# 强制推送(谨慎使用)
git push -f origin main
```
---
## 🔧 常用命令
### 查看相关
```bash
# 查看状态
git status
# 查看提交历史
git log
# 查看简洁历史
git log --oneline
# 查看远程仓库
git remote -v
# 查看分支
git branch
```
### 撤销相关
```bash
# 撤销工作区修改
git checkout -- filename
# 撤销暂存区(保留工作区修改)
git reset HEAD filename
# 撤销上次提交(保留修改)
git reset --soft HEAD^
# 撤销上次提交(不保留修改)
git reset --hard HEAD^
```
### 分支相关
```bash
# 查看所有分支
git branch -a
# 创建新分支
git branch feature-name
# 切换分支
git checkout feature-name
# 创建并切换分支
git checkout -b feature-name
# 合并分支
git merge feature-name
# 删除分支
git branch -d feature-name
```
---
## 🎯 快速推送(一键命令)
### 创建快捷脚本
创建文件 `push.sh`:
```bash
#!/bin/bash
# 快速推送脚本
echo "📝 查看状态..."
git status
echo ""
echo " 添加所有文件..."
git add -A
echo ""
echo "💬 请输入提交信息:"
read commit_message
echo ""
echo "📦 提交中..."
git commit -m "$commit_message"
echo ""
echo "🚀 推送到远程仓库..."
git push origin main
echo ""
echo "✅ 推送完成!"
```
**使用方法**:
```bash
# 添加执行权限
chmod +x push.sh
# 运行脚本
./push.sh
```
---
## 🔐 配置 Git
### 设置用户信息
```bash
# 全局配置
git config --global user.name "你的名字"
git config --global user.email "your.email@example.com"
# 项目配置
git config user.name "你的名字"
git config user.email "your.email@example.com"
```
### 查看配置
```bash
# 查看所有配置
git config --list
# 查看特定配置
git config user.name
git config user.email
```
### 保存密码HTTPS
```bash
# 永久保存
git config --global credential.helper store
# 临时保存15分钟
git config --global credential.helper cache
```
---
## 🌐 远程仓库操作
### 添加远程仓库
```bash
git remote add origin https://git.vcck.cn/nvex/ns2.0.git
```
### 修改远程仓库地址
```bash
git remote set-url origin https://new-url.git
```
### 查看远程仓库
```bash
git remote -v
```
### 删除远程仓库
```bash
git remote remove origin
```
---
## ⚠️ 常见问题
### 1. 推送被拒绝
**错误**: `! [rejected] main -> main (fetch first)`
**原因**: 远程仓库有新的提交
**解决**:
```bash
# 拉取远程更新
git pull origin main
# 如果有冲突,解决后再推送
git push origin main
```
### 2. 合并冲突
**解决步骤**:
```bash
# 1. 查看冲突文件
git status
# 2. 手动编辑冲突文件,删除冲突标记
# <<<<<<< HEAD
# 你的修改
# =======
# 远程的修改
# >>>>>>> branch-name
# 3. 添加解决后的文件
git add conflict-file.txt
# 4. 提交
git commit -m "fix: 解决合并冲突"
# 5. 推送
git push origin main
```
### 3. 忘记添加文件
```bash
# 添加遗漏的文件
git add forgotten-file.txt
# 修改上次提交
git commit --amend --no-edit
# 强制推送(如果已经推送过)
git push -f origin main
```
### 4. 推送到错误的分支
```bash
# 撤销推送(本地)
git reset --hard HEAD^
# 推送到正确的分支
git push origin correct-branch
```
---
## 📋 推送检查清单
推送前检查:
- [ ] 代码已测试,没有明显错误
- [ ] 敏感信息已删除(密码、密钥等)
- [ ] `.gitignore` 已配置正确
- [ ] 提交信息清晰明确
- [ ] 已拉取最新代码(避免冲突)
---
## 🎓 进阶技巧
### 1. 交互式添加
```bash
git add -p
```
可以选择性地添加文件的部分修改
### 2. 暂存修改
```bash
# 暂存当前修改
git stash
# 查看暂存列表
git stash list
# 恢复暂存
git stash pop
# 删除暂存
git stash drop
```
### 3. 查看差异
```bash
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和仓库的差异
git diff --staged
# 查看两次提交的差异
git diff commit1 commit2
```
### 4. 标签管理
```bash
# 创建标签
git tag v1.0.0
# 创建带注释的标签
git tag -a v1.0.0 -m "版本 1.0.0"
# 推送标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags
```
---
## 📱 图形化工具推荐
如果不习惯命令行,可以使用图形化工具:
1. **GitHub Desktop** - 简单易用
2. **SourceTree** - 功能强大
3. **GitKraken** - 界面美观
4. **VS Code** - 内置Git功能
5. **Tower** - Mac专用功能完善
---
## 🔗 相关资源
- [Git 官方文档](https://git-scm.com/doc)
- [Git 教程 - 廖雪峰](https://www.liaoxuefeng.com/wiki/896043488029600)
- [GitHub Guides](https://guides.github.com/)
- [Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf)
---
## 💡 最佳实践
1. **频繁提交**: 小步快跑,每完成一个功能就提交
2. **清晰的提交信息**: 让别人(和未来的自己)能看懂
3. **使用分支**: 新功能在新分支开发,完成后合并
4. **定期推送**: 避免本地代码丢失
5. **拉取后推送**: 推送前先拉取最新代码
6. **检查 .gitignore**: 不要提交敏感信息和临时文件
7. **代码审查**: 推送前检查修改内容
---
**最后更新**: 2024-12-XX
**作者**: NEXT Store Team