Git常用命令指北

git下载

https://registry.npmmirror.com/binary.html?path=git-for-windows/

.gitmodules

Git 忽略文件(.gitignore)内容,主要用于过滤 Visual Studio、Python、Node.js、MAA 相关项目中不需要提交到仓库的文件 / 目录。

主要语法含义:
 
语法 示例 含义
# # 答题日志文件 注释行,仅说明作用,不生效
* *.exe*~ 通配符,匹配任意字符(*.exe 匹配所有 exe 文件,*~ 匹配临时备份文件)
**/ **/[Pp]ackages/* 递归匹配所有目录下的 Packages/ 文件夹
! !.vscode/settings.json 反向匹配(例外规则),表示「不忽略这个文件」,优先级高于普通规则
/ enc_temp_folder/* 匹配指定目录下的所有文件,不递归子目录

git基本语法

初始化仓库

git init

关联 Gitea 远程仓库

# 第一步:查看当前已关联的远程仓库(若输出为空,说明未关联)
git remote -v


# 第二步:若未关联,执行以下命令绑定(替换为你的 Gitea 仓库地址)
git remote add origin <Gitea仓库地址>
# 示例(HTTPS):
# git remote add origin https://gitea.example.com/张三/maa-project.git
# 示例(SSH):
# git remote add origin git@gitea.example.com:张三/maa-project.git

添加文件到暂存区

# 添加所有文件(会自动遵守 .gitignore 规则,跳过无需上传的文件)
git add .
# 若只想添加指定文件,比如只加 README.md 和 src/ 目录:
# git add README.md src/

配置 Git 用户名和邮箱

git config --global user.name "你的Gitea用户名"
git config --global user.email "你的Gitea绑定邮箱"

只想给当前 MAA 项目配置(而非全局),去掉 --global 即可:
git config user.name "你的Gitea用户名"
git config user.email "你的Gitea绑定邮箱"


#验证配置是否生效
git config --list | grep user
# 输出示例:
# user.name=wnboy
# user.email=gm@wnboy.com

清除git暂存缓存

git rm -r --cached .
# 重新添加所有文件到暂存区
git add .

 

提交到本地仓库

git commit -m "初始化项目,提交基础代码"
# 备注:-m 后是提交说明,必须写,建议清晰描述本次提交的内容

推送到 Gitea 远程仓库

# 首次推送需指定分支(默认主分支是 main 或 master,按 Gitea 仓库的分支名来)
git push -u origin main
# 若 Gitea 仓库默认分支是 master,执行:
# git push -u origin master

初始配置后,后续上传只需执行3步:

# 1. 添加修改的文件到暂存区
git add .
# 2. 提交到本地仓库(写清楚更新内容)
git commit -m "修复XX功能,优化XX逻辑"
# 3. 推送到 Gitea
git push

若远程仓库有其他人提交的更新,需先拉取再推送,避免冲突:

git pull origin main  # 拉取远程最新代码
git push origin main  # 推送本地更新

分支冲突处理

git add 冲突文件名
git commit -m "解决分支冲突"
git push

问题排查

统一换行符规则

#  A:让 Git 以 LF 存储,检出时自动转 CRLF(Windows 推荐)
git config --global core.autocrlf true

#  B:强制所有文件用 LF(跨平台协作推荐,和 Linux/Mac 保持一致)
git config --global core.autocrlf input
# 同时禁止 Git 转换换行符
git config --global core.safecrlf false

# 配置后,删除暂存区文件重新添加,警告就会消失
git rm -r --cached .  # 清空暂存区
git add .            # 重新添加文件,无换行符警告

检查本地分支和提交记录

# 1. 查看本地所有分支(确认分支名)
git branch
# 输出示例:若只有 * (HEAD detached at xxx) 或 * master,说明分支不是 main

# 2. 查看提交记录(确认是否有提交)
git log
# 若提示 "fatal: your current branch 'main' does not have any commits yet",说明无提交记录

# 3.Gitea 仓库默认分支若为 master,而你推 main 就会报错,替换分支名即可:
git push -u origin master


# 4.若想把本地分支重命名为 main,再推送:
git branch -M main
git push -u origin main

一键解决分支不匹配

# 1. 确保所有文件已提交
git add .
git commit -m "初始化 MAA 项目代码"

# 2. 把本地当前分支强制重命名为 main
git branch -M main

# 3. 推送 main 分支到远程(若远程无 main,会自动创建)
git push -u origin main

Gitea 仓库已存在 main 分支但仍报错

# 先拉取远程 main 分支的最新内容(即使是空分支),再推送:
git pull origin main --allow-unrelated-histories
git push -u origin main

Gitea 用户名/密码不正确

# 步骤 1:清空 Windows 凭据管理器中的 Git 缓存(关键)
# 1. 按下 Win + R,输入 control keymgr.dll 并回车(打开凭据管理器)
# 2. 找到「普通凭据」中包含 git.wnboy.com 的条目,删除它
# 步骤 2:重新执行推送命令,会弹出账号密码输入框
git push -u origin master

main -> main (fetch first)

远程 Gitea 仓库的 main 分支已有内容(比如默认的 README.md、LICENSE 等),而你的本地仓库没有这些内容

  1. 拉取远程内容并合并到本地
    # 拉取远程 main 分支并合并(核心命令)
    git pull origin main --allow-unrelated-histories
  2. 重新推送本地代码
    git push -u origin main

Pulling is not possible because you have unmerged files

遇到 unmerged files(未合并的文件)错误,这是因为本地存在未解决的合并冲突文件,Git 无法继续拉取 / 合并远程内容,必须先手动解决这些冲突才能继续操作

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容