[git]只有git,没有github, 如何工作

3 阅读3分钟

只用 Git,不用 GitHub 完全可以

Git 本身就是一个分布式版本控制系统,完全可以脱离 GitHub 独立工作。GitHub 只是提供了一个远程托管 + 协作的平台。你完全可以在本地用 Git 管理代码,甚至通过其他方式(U 盘、局域网、自建服务器)实现"远程"功能。

下面从入门到进阶给你讲清楚。


一、核心认知:Git 不需要远程仓库

Git 是分布式的,每个本地仓库都是完整的,包含全部历史。所以:

  • ✅ 本地提交、分支、合并、回滚 —— 全部可用. 这里指的是本地
  • ✅ 查看历史、diff、blame —— 全部可用
  • ❌ 只有"推送到 GitHub 供他人协作/备份"这一层需要远程(但可以用别的方式替代)

二、最小可用工作流(本地单机)

1. 安装与配置(一次性)

git --version                          # 确认已安装
git config --global user.name "你的名字"
git config --global user.email "you@example.com"

2. 初始化仓库

mkdir myproject && cd myproject
git init                               # 创建本地仓库

3. 日常循环:改 → 加 → 提交

git status                             # 看哪些文件变了
git add .                              # 暂存所有改动(或 git add 文件名)
git commit -m "描述这次改了什么"          # 提交到本地历史

就这三步,反复用。不需要任何网络。

4. 看历史 / 回退

git log --oneline --graph              # 看提交历史
git diff                               # 看未暂存的改动
git checkout -- 文件名                  # 撤销某文件改动
git reset --hard <commit哈希>           # 回到某个提交(慎用)

5. 分支(本地也很有用)

git branch feature-x                   # 建分支
git switch feature-x                   # 切换(新语法)
git merge feature-x                    # 合并回主线
git branch -d feature-x                # 删除分支

三、没有 GitHub,如何"备份"和"多机同步"

这是你唯一需要替代 GitHub 的地方。几种方案:

方案 A:本地裸仓库(bare repo)当"远程"

在你的硬盘/移动硬盘/U 盘/局域网另一台机器上建一个裸仓库:

# 在备份盘上
git init --bare /path/to/backup/myproject.git

# 在你的项目里
git remote add origin /path/to/backup/myproject.git
git push -u origin main

之后 git push / git pull 就和用 GitHub 一样了,只是地址是本地路径。这是最推荐的单机替代方案。

方案 B:直接拷贝整个仓库文件夹

Git 仓库就是 .git 目录 + 工作区,直接 cp -r 到备份盘即可,历史全在。简单粗暴但有效。

方案 C:局域网自建远程

  • 在另一台机器 git init --bare,通过 ssh://user@host/path/repo.git 访问
  • 或自建 Git 服务:Gitea / Gogs(轻量,单机可跑)、GitLab CE

方案 D:用其他托管(非 GitHub)

GitLab、Gitee、Bitbucket、自建服务器都行,Git 协议通用。


四、进阶:只用 Git 也能做的事

  • 打标签:git tag v1.0 标记版本
  • 储藏:git stash 临时保存未提交改动
  • 拣选:git cherry-pick <hash> 把某提交搬到当前分支
  • 二分查找 bug:git bisect 定位引入问题的提交
  • 钩子:.git/hooks/ 里写脚本做提交前检查
  • 子模块 / worktree:管理多仓库或多工作区

五、一句话总结

Git = 本地版本控制引擎(必需);GitHub = 远程托管 + 协作 UI(可选)。 你只要会用 init / add / commit / log / branch / merge,再配一个本地裸仓库做 push/pull 备份,就能完全脱离 GitHub 工作。