1. 为什么是 Gitee 而不是网盘或 GitHub
先说结论:如果你要的是"公司和家里两台电脑,编辑同一批文件夹,打开就是最新版",那网盘、GitHub、Gitee 都能做到一部分,但真正用下来,你会发现在国内环境里,Gitee 是最省心的那一个。
我试过的组合不少。最早用百度网盘,把工作文件夹丢进同步盘,问题在于它按"文件时间戳"和"目录遍历"来同步,经常出现一个文件在公司改完,回家打开还是旧版;更难受的是,Office 或编辑器在文件占用状态下,网盘客户端会报"文件被占用,无法同步",你得手动去点重试。后来试过坚果云,同步体验好一些,但对单个文件夹的版本管理几乎没有——你误删了一个文件,想找回三天前的版本,网盘不一定留得住。
GitHub 反而更适合做这件事,但它有两个现实障碍:一是国内访问不稳定,push/pull 频繁失败,经常要重试,尤其是文件多的时候;二是私有仓库虽然免费,但仓库名和部分交互在国内网络环境下各种别扭。相比之下,Gitee 是国内的 Git 托管平台,访问速度快、私有仓库免费、操作习惯和 GitHub 几乎一致,而且它本身就是 Git 协议,天然拥有版本管理、历史回溯、分支合并这些能力。
1.1 网盘同步与 Git 同步的本质差异
很多人第一次接触 Git 同步时,会觉得它"没有网盘自动化"。确实是,网盘是后台守护进程盯着文件夹,你保存文件,它立刻上传;Git 需要你手动敲命令或点击提交按钮。但正是这个"手动"的环节,带来了网盘没有的好处:
- 每一次提交都是一次全量快照,你可以随时回到任意历史版本,而不是只有"当前状态"。
- 提交信息记录了"这次改了什么、为什么改",配合 commit 历史,你能知道文件为什么变成现在这样。
- 同步是"显式"的——你不会出现"以为同步了,其实没传上去"的情况,因为 push 成功与否,命令行会明确告诉你。
我个人的经验是:网盘适合同步"不需要版本管理的素材",Git 适合同步"需要谨慎修改、需要回溯的文档和代码"。对于"公司和家里继续编辑同一份文档"这个场景,Git 的版本管理能力恰好覆盖了网盘最薄弱的环节。
1.2 三套方案的取舍清单
| 方案 | 访问速度 | 私有仓库 | 版本回溯 | 自动化程度 | 适合人群 |
|---|---|---|---|---|---|
| Gitee | 快,国内节点 | 免费 | 完整,可回滚 | 手动提交 | 需要版本管理、追求稳定 |
| GitHub | 不稳定,看网络环境 | 免费 | 完整 | 手动提交 | 网络环境好、习惯用 GitHub 的人 |
| 网盘 | 快 | 不涉及 | 有限,依赖客户端 | 自动 | 不关心版本、只要最新版 |
如果你只是临时放几个文件,网盘更省事;但你的目标是"长期维护一批文件,且两边都能安全地改",那我建议直接用 Gitee。
1.3 什么样的文件夹适合这种方案
不是所有文件夹都适合托管到 Git 仓库。根据我的踩坑经验,适合的有:
- 文档类:Markdown 笔记、需求文档、工作日志、简历、合同模版
- 代码类:个人项目、学习代码、脚本、爬虫
- 配置类:编辑器配置、shell 配置、常用工具配置
不适合的有:
- 超大文件:视频、镜像、数据库备份,Git 仓库会越来越臃肿
- 频繁变动的二进制文件:比如大型图片素材库,每次提交都要全量比对
- 含敏感信息的文件:密码文件、密钥文件、私人资料,除非确认是私有仓库,否则慎重
判断标准很简单:文件是否以文本为主?是否需要版本回溯?如果是,那 Git 就是对的方案。
2. 仓库准备:注册、新建仓库、许可证到底选什么
在配置本地环境之前,先把远端仓库准备好。这个过程很多人随口就跳过了,但恰恰是"许可证选什么""仓库可见性"这些细节,后期改起来特别麻烦。
2.1 注册与实名认证
Gitee 注册流程不算复杂,邮箱+手机号就能搞定,但有一个重要环节:实名认证。Gitee 对实名认证的要求比较严,未认证用户很多操作受限,比如新建仓库、上传大文件、开通 Pages 服务都会卡住。注册后直接提交实名认证,人脸或身份证照片二选一,审核速度通常几分钟到几小时。
实测下来,注册时用常用邮箱最省事,因为后续的 Git 操作记录会关联这个邮箱,以后换邮箱会导致历史提交作者信息显示异常。这点和 GitHub 一样,一旦正式用起来就不好改了。
2.2 新建私有仓库的关键选项
登录 Gitee 后,右上角 "+" 号,选择"新建仓库",这时候有几个选项需要认真对待:
- 仓库名称:建议全小写英文单词,用短横线连接,比如
work-docs、home-lab。中文名称在 Git 命令里会变成转义字符,操作起来很痛苦。 - 开源:选择"私有"。如果你只是想自己或少数几台电脑同步,完全没必要公开。Gitee 的私有仓库免费,不限制数量。
- 初始化仓库:我建议先不勾选"生成 README 文件"和"初始化仓库"。因为本地文件夹可能已经有内容,远端初始化之后再往本地拉,会产生冲突,增加不必要的处理步骤。干净的远端仓库,等你本地 init 之后直接推上来就行。
- 分支模型:默认分支建议保持 master 或 main,不要在这里折腾。对个人同步场景来说,单分支最简单。
2.3 开源许可证选什么
如果你选择的是私有仓库,许可证其实无所谓,因为它不对外发布。但热词里很多人搜"gitee开源许可证选什么",说明大家对这个概念有误解。
许可证的本质是:如果你把仓库公开,别人使用你的代码时需要遵守什么规则。常见的几个选项:
- MIT:最宽松,别人可以自由使用、修改、商用,只需保留版权声明
- Apache 2.0:比 MIT 多了专利授权相关条款,适合开源项目
- GPL 3.0:传染性强,别人用了你的代码,也必须开源
对你私人同步的文档文件夹来说,这些都不重要。我的建议是:私有仓库直接用 MIT 或干脆不选,公开仓库再根据你的意愿决定。选错许可证对个人同步场景没有实际影响,不用过度纠结。
3. 本地环境与 SSH 密钥配置
仓库建好了,接下来是本地的 Git 环境和身份认证。这一步很多人卡在"密钥配置"和"多账号冲突"上,我拆开讲。
3.1 安装 Git 并验证
Windows 用户直接去 Git 官网或国内镜像下载安装包,一路下一步即可。安装完成后打开终端(cmd 或 PowerShell),输入:
git --version看到版本号就代表安装成功。Mac 用户更简单,系统自带 Git,或者用 Homebrew 装最新版。
安装完之后的全局配置是很多人忽略的。虽然不配置也能用,但提交历史里的作者信息会变成空白或乱码,后面回溯版本时很痛苦:
git config --global user.name "你的名字" git config --global user.email "你注册Gitee的邮箱"注意:这里的名字和邮箱会显示在每一次提交记录里,如果你想保护隐私,可以用一个固定的昵称,但邮箱建议和 Gitee 账号一致,否则 Gitee 的提交记录不会关联到你的头像和账号。
3.2 生成 SSH 密钥并添加公钥
Gitee 支持 HTTPS 和 SSH 两种协议。HTTPS 每次 push/pull 都要输账号密码(虽然 Gitee 现在支持记住密码,但经常失效),SSH 配置一次之后可以长期免密操作。所以我的建议是直接用 SSH。
生成密钥的命令:
ssh-keygen -t rsa -b 4096 -C "你的邮箱"一路回车,会生成一对密钥文件:默认在用户目录的.ssh文件夹下,id_rsa是私钥,id_rsa.pub是公钥。私钥永远不要给别人,公钥要添加到 Gitee 上。
查看公钥内容:
cat ~/.ssh/id_rsa.pub然后登录 Gitee,进入"设置" -> "安全设置" -> "SSH 公钥",把公钥粘贴进去,标题随意。添加成功后测试:
ssh -T git@gitee.com如果看到Hi xxx! You've successfully authenticated, but GITEE.COM does not provide shell access.这样的提示,就说明 SSH 配置成功了。
3.3 本地全局配置与 Gitee 和 GitHub 的密钥冲突
热词里有一个高频问题:"本地全局设置了 Gitee 和 GitHub 两个库冲突,怎么设置并且解决?"
这个问题我知道很多人遇到过。现象是:配置了 Gitee 的密钥,又配置了 GitHub 的密钥,结果 push 到其中一个平台时提示权限认证失败。
原因在于 SSH 默认会读取~/.ssh/id_rsa这个固定文件,如果你把 Gitee 的公钥覆盖了 GitHub 的,或者用同一个密钥分别添加到两个平台,本身没问题,但如果你生成了两套密钥,默认配置就不知道该用哪一套。
解决办法是用 SSH 的 config 文件指定不同平台的密钥。在~/.ssh目录下创建config文件:
# Gitee Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_rsa_gitee # GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_github生成密钥时,不要一路回车,而是指定文件名:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_gitee -C "邮箱" ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_github -C "邮箱"然后把各自公钥分别添加到对应平台。这样系统会按域名自动匹配对应的私钥,两边互不干扰。这是我最推荐的方案,比反复删除重配密钥省心得多。
4. 把现有本地文件夹托管上库:完整分步操作
现在到了核心环节。你已经有一个本地文件夹,里面可能是一堆文档、项目代码或笔记,目标是把整个文件夹托管到 Gitee 仓库,然后从另一台电脑克隆下来继续编辑。
4.1 初始化本地仓库并完成首次提交
打开终端,进入你的目标文件夹。注意,进入的是文件夹本身,而不是它的上级目录:
cd /path/to/your/folder然后初始化一个 Git 仓库:
git init执行后文件夹里会多出一个隐藏的.git目录,这就是整个 Git 仓库的"元数据区域"。这个目录不要手动删,也不要同步到网盘,否则仓库会损坏。
接着把所有文件加入暂存区。这里有个小陷阱:git add .会把当前目录下所有文件都加进去,包括临时文件、日志文件、系统自动生成的隐藏文件。所以执行之前,最好先用git status看一眼,确认没有不该提交的文件:
git status如果发现混入了垃圾文件,先创建.gitignore,把不需要的文件排除掉(下一节细说)。然后:
git add . git commit -m "首次提交"提交成功后会显示一行摘要,包含文件数量和变更内容。
4.2 关联远程仓库并推送
现在本地仓库已经就绪,回到 Gitee 仓库页面,复制 SSH 地址,长这样:
git@gitee.com:你的用户名/仓库名.git执行关联:
git remote add origin git@gitee.com:你的用户名/仓库名.git然后推送:
git push -u origin master加了-u参数的用意是设置上游分支,告诉 Git 本地的 master 分支对应远端的 origin/master。这样以后只需要敲git push或git pull,不需要再带参数。
推送成功后,刷新 Gitee 仓库页面,应该能看到你的全部文件。
4.3.gitignore的灵魂用法:哪些文件不该进仓库
gitignore是决定这个方案能不能长期用的关键。在一个普通工作文件夹里,哪些东西不该进 Git 仓库?
- 系统文件:Windows 的
Thumbs.db、macOS 的.DS_Store - 编辑器配置:
.vscode/里可能包含个人偏好,不一定适合共享 - 临时文件:
.tmp、~$开头的 Office 临时文件 - 日志文件:
.log、崩溃转储文件 - 构建产物:编译生成的目录,比如
node_modules/、dist/、build/
一个典型的工作文档gitignore长这样:
.DS_Store Thumbs.db ~$*.doc* *.tmp *.log .idea/ .vscode/创建.gitignore的正确时机是在git add .之前。如果你已经误提交了某些文件,需要先执行:
git rm -r --cached 文件名这会从仓库中移除文件,但保留本地文件。然后再把规则加入.gitignore,提交一次。
我记得早期用这个方案时,把工作文件夹里几 GB 的压缩包也推上去了,结果仓库越来越大,每次 pull 都慢得难受。后来花大力气清理,才意识到从一开始就应该用一个干净的gitignore。
5. 公司和家里两端的日常同步工作流
仓库建立好了,接下来是日常使用。这一步是整个方案的核心:如何保证两台电脑编辑同一批文件,始终处于同步状态。
5.1 第二台电脑的克隆与接管
到了公司电脑,装好 Git、配好 SSH 密钥后,克隆远程仓库:
git clone git@gitee.com:你的用户名/仓库名.gitGit 会把整个仓库包括所有历史版本拉取到本地。克隆完成后,你不需要再执行git init,因为仓库是完整的。
有一个常见误区:克隆下来的仓库,如果你用git config user.name和user.email查看,会发现提交作者信息是全局配置的,不是当前仓库的。如果这台电脑上只是临时用,无所谓。如果这台电脑你会长期使用,最好检查一下本机全局配置是否正确,避免提交记录变成"Unknown"。
5.2 最稳妥的"四连"操作顺序
日常同步的标准流程,我总结成四个命令,每一步都有它的必要性:
git status # 查看当前状态,确认有没有未提交的修改 git add . # 把修改加入暂存区 git commit -m "描述本次修改内容" git pull # 先拉取远端的最新内容 git push # 再推送本地内容为什么要先 pull 再 push?因为如果公司在上午改了文件并推送,你在家里下午改了文件后直接 push,Git 会因为远端有你不认识的提交而拒绝推送。你必须要先 pull,把远端的进度合并到本地,然后才能 push。
这个顺序不能变。先 pull 再 push,会让你始终在远端最新版本的基础上提交,冲突的概率会大幅降低。
5.3 提交信息的规范与同步节奏
提交信息是给自己看的,不要写"修改"或"更新"这种毫无信息量的话。我自己的习惯是:
- 每条提交说清楚"改了什么、为什么改":例如
修复第三章数据统计公式、补充面试准备笔记、调整博客样式中的字体大小 - 一次提交只做一件事,不要攒着几十个文件一起提交。如果文件很多且彼此无关,分开提交,回滚时才有意义
- 同步节奏:每次结束工作前提交并推送,第二天到另一台电脑先 pull。这个习惯一旦养成,你永远不会遇到"到底哪台电脑是最新的"这种问题
我见过不少人嫌麻烦,好几天才提交一次,结果某天改完忘了 push,回家 pull 下来还是旧版,然后一脸懵。Git 不是自动同步工具,它的前提是你主动记录。把这个动作变成工作收尾仪式一样的存在,才是真正用好这套方案的关键。
6. 冲突是怎么产生的,以及如何破解
即便流程正确,总有一天你会遇到"冲突"(conflict)。这不丢人,Git 设计冲突机制本来就是给你兜底的,关键是你懂不懂它背后的逻辑。
6.1 一次真实的冲突复现
我举一个真实的例子。假设你在家修改了notes.md的第10行,写的是"下周三项目评审会"。第二天在公司,你忘了 pull,直接在旧版本上修改了第10行,写的是"下周四项目周会"。提交推送时,Git 告诉你 push 被拒绝,你执行 pull,然后提示CONFLICT (content)。
这时候notes.md文件内部会变成这样:
<<<<<<< HEAD 下周四项目周会 ======= 下周三项目评审会 >>>>>>> 你自己提交的版本号<<<<<<< HEAD和=======之间是当前本地的内容,=======和>>>>>>>之间是远端拉下来的内容。你要做的不是关闭文件,而是打开它,把两段内容合并成你想要的样子,然后删除那三行标记。
6.2 解决冲突的标准流程
合并完成后,执行:
git add notes.md git commit -m "解决notes.md冲突,统一为周四周会"这个 commits 完成了一次真正的合并。之后继续 push,远端就会接收你的修改。
第一次遇到冲突时,很多人会恐慌,觉得文件坏了。实际上只要记住一点:<<<<<<<、=======、>>>>>>>是 Git 加的特殊标记,手动处理掉标记,保留你想要的内容,然后重新 add 和 commit,一切就恢复了。
冲突并不可怕,可怕的是你在不知道的情况下直接覆盖掉另一边的工作成果。Git 的冲突提示恰恰是最好的保护。
6.3 多电脑同步的其他坑
冲突是最大的坑,但不是唯一的坑。多电脑同步几年下来,我还踩过这些:
- 换行符问题:Windows 和 Linux/macOS 的换行符不同。如果仓库里的文件在 Windows 上编辑后提交,换行符可能变成 CRLF,造成不必要的 Diff。解决办法是在本地全局配置里设置
git config --global core.autocrlf true(Windows)或input(Mac/Linux),让 Git 自动转换。 - 文件名大小写:Windows 文件系统不区分大小写,你重命名文件时只改了大小写(比如
Notes.md->notes.md),Git 可能察觉不到。需要执行git mv来强制重命名,否则仓库里的文件名会和你本地不一致。 - 大文件推不动:如果仓库里不小心混入几十 MB 以上的二进制文件,Gitee 对单文件大小有限制,push 时直接失败。这时候不要硬扛,把大文件移出仓库目录,或者使用 Git LFS。
- 同一时刻只在一台电脑上编辑同一个文件:这句话是废话但最重要。多人协作模式下,Git 靠分支管理来解决;个人多设备同步场景,最好只保持一条主线分支。两边同时改同一个文件,哪怕没撞上,合并时也要你手动处理,白费精力。
我的体会是,这套方案真正跑顺之后,你会慢慢习惯"提交-推送-拉取"的节奏,甚至开始享受它的确定性——文件在哪台电脑上改的、改了几次、什么时候改的,全部有据可查。相比之下,网上那些"同步软件"反而让人心里没底。
最后分享一个小习惯:我在每台电脑的终端里,把git pull设成了每天开工的第一条命令。这么做不是因为怕冲突,而是为了让一天的工作始终从最新状态开始。配合 Gitee 的访问速度,整个过程不到几秒钟,却省掉了无数"文件到底哪个新"的纠结。