前言
Gitea是一个轻量级的Git代码托管服务,功能和Github、GitLab类似,可以用来搭建自己的私有仓库。
这篇文章主要记录本地Git连接Gitea时需要做的配置,包括用户名邮箱、SSH密钥、仓库推送和常见报错处理。
安装Git
Windows可以直接去Git官网下载Git for Windows。安装时如果不确定选项,基本保持默认即可。安装完成后,建议右键打开Git Bash执行后面的Git和SSH命令,这样Linux里的大部分命令都能直接使用。
如果习惯用PowerShell,也可以使用Git,但部分命令写法会不同,后面会单独标出来。
Linux一般用系统包管理器安装:
# Debian / Ubuntusudo apt install git
# Arch Linuxsudo pacman -S git
# Fedorasudo dnf install git安装完成后检查版本:
git --version配置Git用户名和邮箱
这一步会影响提交记录里显示的作者信息。
git config --global user.name "你的用户名"git config --global user.email "你的邮箱"查看配置:
git config --global --list如果只想给当前仓库单独设置,不要加--global:
git config user.name "你的用户名"git config user.email "你的邮箱"生成SSH密钥
推荐使用SSH连接Gitea,这样以后推送代码不用每次输入账号密码。
先检查本机是否已经有SSH密钥。
Linux、macOS、Windows Git Bash:
ls ~/.sshWindows PowerShell:
dir $env:USERPROFILE\.ssh如果已经有id_ed25519.pub或id_rsa.pub,可以直接使用现有公钥。没有的话生成一个新的:
ssh-keygen -t ed25519 -C "你的邮箱"一路回车即可。Windows默认也会生成到C:\Users\你的用户名\.ssh\目录。
生成完成后查看公钥。
Linux、macOS、Windows Git Bash:
cat ~/.ssh/id_ed25519.pubWindows PowerShell:
type $env:USERPROFILE\.ssh\id_ed25519.pub复制输出的整行内容,注意是.pub结尾的公钥,不要把私钥复制出去。
在Gitea添加SSH公钥
登录Gitea后,进入用户设置,找到SSH/GPG密钥,将刚刚复制的公钥添加进去。
添加完成后,在本地测试连接:
ssh -T git@你的Gitea域名例如:
ssh -T git@git.example.com第一次连接会提示是否信任主机,输入yes即可。
如果能看到类似欢迎信息,说明SSH配置成功。
配置Windows换行
Windows默认换行是CRLF,Linux默认是LF。如果项目里多人协作,建议先设置Git的换行处理。
git config --global core.autocrlf input创建并推送新仓库
先在Gitea网页端新建一个空仓库,创建时建议先不要勾选初始化README,这样本地推送最简单。
然后在本地项目目录执行:
git initgit add .git commit -m "Initial commit"git branch -M maingit remote add origin git@你的Gitea域名:用户名/仓库名.gitgit push -u origin main如果Gitea给你的默认分支是master,也可以把上面的main换成master。
克隆已有仓库
如果仓库已经存在,直接复制Gitea页面上的SSH地址:
git clone git@你的Gitea域名:用户名/仓库名.git进入目录后就可以正常拉取和推送:
cd 仓库名git pullgit pushHTTPS方式
如果不想配置SSH,也可以使用HTTPS地址:
git clone https://你的Gitea域名/用户名/仓库名.git但是现在很多Git服务不再推荐直接用账号密码推送,通常需要使用访问令牌。Gitea可以在用户设置里创建Access Token,然后推送时用Token代替密码。
修改远程仓库地址
查看当前远程地址:
git remote -v如果之前用了HTTPS,想改成SSH:
git remote set-url origin git@你的Gitea域名:用户名/仓库名.git再次检查:
git remote -v多个Git账号配置
如果同时使用Github和自己的Gitea,建议给不同服务配置不同密钥。
先生成一个专门给Gitea用的密钥:
ssh-keygen -t ed25519 -C "你的邮箱" -f ~/.ssh/id_ed25519_gitea然后编辑~/.ssh/config。Windows对应路径是C:\Users\你的用户名\.ssh\config,没有这个文件就新建一个。
Host gitea HostName 你的Gitea域名 User git IdentityFile ~/.ssh/id_ed25519_gitea之后仓库地址可以写成:
git remote set-url origin gitea:用户名/仓库名.git测试连接:
ssh -T gitea常见问题
Permission denied (publickey)
一般是SSH公钥没有配置好,可以按下面步骤排查:
- 确认Gitea里添加的是
.pub公钥。 - 确认本地远程地址是SSH地址,不是HTTPS地址。
- 执行
ssh -T git@你的Gitea域名测试连接。 - 多密钥环境下检查
~/.ssh/config是否写对。
src refspec main does not match any
通常是本地还没有提交,先提交一次:
git add .git commit -m "Initial commit"git push -u origin main也可能是当前分支不叫main,用下面命令查看:
git branchfailed to push some refs
远程仓库里已经有提交,而本地没有同步。先拉取:
git pull --rebase origin main解决冲突后再推送:
git push端口不是22怎么办
如果Gitea的SSH端口不是默认的22,比如是2222,仓库地址可以写成:
git clone ssh://git@你的Gitea域名:2222/用户名/仓库名.git也可以写进~/.ssh/config:
Host gitea HostName 你的Gitea域名 User git Port 2222 IdentityFile ~/.ssh/id_ed25519_gitea然后使用:
git clone gitea:用户名/仓库名.git总结
日常使用Gitea主要就是三步:
- 本地配置Git用户名和邮箱。
- 生成SSH密钥并添加到Gitea。
- 使用SSH地址克隆或推送仓库。
配置完成后,Gitea和其他Git托管平台的使用方式基本一致,常用命令还是git clone、git pull、git add、git commit和git push。