乐于分享
好东西不私藏

Git 从下载安装到多电脑同步代码库

Git 从下载安装到多电脑同步代码库
入门Git / 版本控制

从零配置到多端协作,完整走通代码同步闭环
读完本篇你将能:从零开始在你的电脑上安装并配置 Git,创建第一个本地代码仓库,推送到远程服务器,然后在另一台电脑上克隆并同步代码变更——完整走通多电脑协作开发的核心闭环。
📑 本文目录
01下载与安装:三平台全覆盖
02首次配置:告诉 Git 你是谁
03创建第一个仓库:git init 与 git clone
04提交你的第一份代码
05注册远程仓库:GitHub 与 Gitee
06SSH 密钥配置:免密推送
07推送代码到远程:git push
08在第二台电脑上获取代码:git clone
09多电脑日常同步:pull 与 push 工作流
10冲突处理:当两台电脑同时修改
11实战演练:完整的多电脑同步流程

1. 下载与安装:三平台全覆盖

多电脑同步的前提,是每一台机器上都装好 Git。不同操作系统安装方式不同,下面按平台分别演示,装完后用同一条命令验证。

macOS

Bash
# 方式一:用 Homebrew(推荐,已安装 brew 时最快)
brewinstall git
# 方式二:访问 https://git-scm.com/download/mac 下载安装包

Windows

PowerShell
# 方式一:用 winget 包管理器一行搞定
wingetinstall--id Git.Git
# 方式二:访问 https://git-scm.com/download/win 下载 Git for Windows

Linux(Ubuntu / Debian)

Bash
sudo apt-get update&&sudo apt-get install git

Linux(CentOS / RHEL)

Bash
sudo yum install git

验证安装

无论哪个平台,安装完成后都执行同一条命令确认版本号能正常输出。

Bash
git--version
终端输出
git version 2.55.0

看到版本号说明 Git 已经就绪。下面这一步每个平台都可能踩到。

⚠️ 常见错误
安装后输入 git: command not found — 这是因为 PATH 环境变量没有刷新。
✓ 正确:Windows 完全关闭终端后重新打开「Git Bash」;macOS/Linux 执行 source ~/.zshrc 或重开终端窗口。

2. 首次配置:告诉 Git 你是谁

Git 每次提交都会把「作者」写进历史记录。所以在正式用之前,要把你的名字和邮箱告诉它——这台电脑上所有仓库都会默认使用这套身份。

Bash
gitconfig--global user.name "张三"
gitconfig--global user.email "zhangsan@example.com"

这两行配置一次,永久生效。再用下面命令查看全部配置,确认名字和邮箱已写入。

Bash
gitconfig--list
终端输出
user.name=张三
user.email=zhangsan@example.com
init.defaultbranch=main

另外建议顺手把默认分支名设为 main,避免每次 init 后还要改分支名。

Bash
gitconfig--global init.defaultBranch main
💡 小贴士
常用可选配置:git config --global core.editor "code --wait" 把默认编辑器改成 VS Code;git config --global pull.rebase true 让拉取时走 rebase,保持线性历史。

3. 创建第一个仓库:git init 与 git clone

配置完身份,就能开仓库了。仓库(repository)就是被 Git 管理的目录。创建仓库有两条路:从零新建,或从远程克隆一份现成的。

Bash
# 从零创建一个名为 my-project 的新仓库
gitinit my-project
终端输出
Initialized empty Git repository in /Users/zhangsan/my-project/.git/
Bash
# 从远程地址克隆一份现成仓库
gitclone git@github.com:user/repo.git

无论哪种方式,被管理的目录里都会多出一个隐藏的 .git 目录。

档案馆比喻
把 .git 目录想象成项目专属的「档案馆」——它记录了项目每一次变更存档、谁改的、改了什么。你能看见的代码文件是展厅里的展品,档案馆藏在幕后。永远不要手动去改这个目录,否则档案损坏,历史就乱套了。

4. 提交你的第一份代码

有了档案馆,下一步是往里存第一份档案。完整流程是:查看状态 → 暂存 → 提交。先用 status 看看仓库现在是什么情况。

Bash
cd my-project
echo"# 我的项目" > README.md
gitstatus
终端输出
On branch main
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README.md

README.md 显示为「Untracked」,意思是 Git 还没把它纳入管理。用 add 把文件放进暂存区,再 commit 正式归档。

Bash
1
2
3
4
5
6
7
8
9
# 暂存单个文件
gitadd README.md
# 暂存全部改动(新文件、修改、删除)
gitadd .
# 正式提交,-m 后跟说明
gitcommit-m"初始提交:添加项目说明"
# 查看提交历史
gitlog--oneline
终端输出
[main (root-commit) a1b2c3d] 初始提交:添加项目说明
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
a1b2c3d (HEAD -> main) 初始提交:添加项目说明

add 是把改动放进「暂存区」,commit 才是正式盖章归档。两步分离,让你能挑选要一起归档的改动。多电脑同步时,每一台电脑上执行的都还是这套 add → commit 流程。

⚠️ 常见错误
git commit(不带 -m) — 这会打开 Vim 编辑器让你写说明,不会用 Vim 的人会卡住。
✓ 正确:始终带 -m "说明";万一卡在 Vim,按 Esc 再输入 :q! 强制退出。

5. 注册远程仓库:GitHub 与 Gitee

本地提交只存在你这一台电脑里。要让另一台电脑拿到代码,需要一个「中转站」——远程仓库。把远程仓库想象成快递的「分拣中心」:电脑A把包裹寄到这里,电脑B来这里取。

国内常用两个平台:GitHub(全球最大)和 Gitee(码云,国内访问快)。注册后点击「New repository / 新建仓库」,填名字、选公开或私有、创建即可。创建后页面会给出仓库地址,分 HTTPS 和 SSH 两种,先记住它。

对比项
GitHub
Gitee
国内访问速度
较慢,常需代理
快,无需代理
私有仓库
免费不限数量
免费 5 个
社区与开源规模
全球最大
国内项目为主

如果你在国内、只想要同步速度快,选 Gitee;如果要把项目展示给全世界或参与开源,选 GitHub。拿到仓库地址后,下一步解决「免密推送」。

6. SSH 密钥配置:免密推送

用 HTTPS 推送每次都要输账号密码,很烦。SSH 密钥相当于一张「电子门禁卡」——你把公钥交给服务器,以后这台电脑推送就自动刷开门禁,无需再输密码。每台需要推送的电脑都要单独配一次。

Bash
ssh-keygen-t ed25519 -C"zhangsan@example.com"
终端输出
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519.pub

一路回车用默认值即可。生成后用 cat 把公钥打印出来,整段复制。

Bash
cat ~/.ssh/id_ed25519.pub
终端输出
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILm2... zhangsan@example.com

打开 GitHub/Gitee 的「Settings → SSH and GPG keys → New SSH key」,把公钥粘贴进去保存。然后用 ssh -T 测试门禁卡是否生效。

Bash
ssh-T git@github.com
ssh-T git@gitee.com
终端输出
Hi zhangsan! You've successfully authenticated, but GitHub does not provide shell access.

看到这句问候就说明门禁卡生效。两种连接方式各有取舍:

对比项
HTTPS
SSH
安全性
靠账号密码/token
非对称密钥,更高
便捷性
每次可能要输密码
配好一次免密
推送速度
正常
正常,略快
⚠️ 常见错误
git push 报 Permission denied (publickey) — 服务器没认出你的门禁卡。
✓ 排查:①确认公钥已添加到平台;②用 ssh -vT git@github.com 看详细日志;③远程地址必须是 git@ 开头而非 https://。

7. 推送代码到远程:git push

门禁卡就位,该把第 4 章的本地提交寄到中转站了。先关联远程地址,再推送。

Bash
1
2
3
4
5
6
# 关联远程仓库,取名叫 origin
gitremoteadd origin git@github.com:zhangsan/my-project.git
# 查看已关联的远程地址
gitremote-v
# 首次推送,-u 设置上游分支
gitpush-u origin main
终端输出
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 232 bytes
To github.com:zhangsan/my-project.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

-u 的作用是建立本地 main 与远程 origin/main 的「跟踪关系」。配好之后,以后这台电脑推送只需 git push 三个字,Git 就知道往哪推。

⚠️ 常见错误
push 被拒 ! [rejected] (non-fast-forward) — 远程有你本地没有的提交,直接推会把人家覆盖掉。
✓ 正确:先 git pull 把远程更新拉下来合并,再 push。这也是多电脑同步的核心动作。

8. 在第二台电脑上获取代码:git clone

代码已经在中转站了。现在换到第二台电脑,从远程把整个项目取下来。前提:这台电脑也装好了 Git、配好了 SSH 密钥和 user 身份。

Bash
gitclone git@github.com:zhangsan/my-project.git
终端输出
Cloning into 'my-project'...
remote: Enumerating objects: 3, done.
Receiving objects: 100% (3/3), done.
Bash
# 克隆到指定目录名
gitclone git@github.com:zhangsan/my-project.git my-folder

clone 是一次性把远程整个仓库(含全部历史)下载到本地,并自动配好 origin 远程地址和上游跟踪分支。所以 clone 之后不必再手动 remote add。

💡 小贴士
clone 完立刻执行 git log --oneline 查看完整提交历史,确认这是你想接手的项目状态;再 git branch -a 看看有哪些分支可供切换。

9. 多电脑日常同步:pull 与 push 工作流

两台电脑都有项目后,日常就是「你推我拉」的循环。核心节奏是:开始工作前先 pull 拿最新,结束前 push 推上去。

电脑A
commit
push
推送
远程仓库
中转站
电脑B
pull
Bash
gitpull
终端输出
Updating a1b2c3d..e4f5g6h
Fast-forward
 README.md | 3 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

pull 一步到位:先 fetch 把远程更新取回,再 merge 合并进当前分支。如果想看得更细,可以拆成两步。

Bash
gitfetch# 只取回更新,不改动工作区
gitmerge origin/main # 手动合并
对比项
git pull
git fetch
是否合并
取回并合并
只取回不合并
是否改动工作区
可能立即改动
不改动
适用场景
日常快速同步
先查看再决定合并
💡 小贴士
养成「每日开工先 pull、收工前 push」的节奏,能避免大部分冲突。若希望历史干净线性,用 git pull --rebase,它把你的本地提交「搬到」远程最新提交之后,不产生合并提交。

10. 冲突处理:当两台电脑同时修改

如果两台电脑改了同一行代码又都推上去,Git 没法自动决定留哪个,就会报「冲突」。冲突不可怕,它只是 Git 把决定权交给你。下面演示一次完整的解决过程。

场景:电脑A把 README.md 第一行改成「项目A版」,电脑B把同一行改成「项目B版」,电脑B pull 时触发冲突。

Bash
gitpull
终端输出
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

打开 README.md,会看到 Git 留下的冲突标记:

README.md
<<<<<<< HEAD
# 项目B版
=======
# 项目A版
>>>>>>>> origin/main

三段标记的含义:<<<<<<< 到 ======= 是你本地(HEAD)的版本;======= 到 >>>>>>>> 是远程的版本。解决冲突就是手动挑出最终要保留的内容,删掉所有标记。

git pull
触发冲突
查看冲突标记
手动取舍
git add
标记解决
git commit
完成合并
Bash
1
2
3
4
5
6
# 编辑文件,保留最终内容,删掉所有冲突标记
# 文件已改好后,标记该冲突已解决
gitadd README.md
# 完成合并提交
gitcommit-m"解决 README 标题冲突"
gitpush
⚠️ 常见错误
冲突时直接 git checkout -- . 覆盖 — 这会把对方的改动全删掉,造成代码丢失。
✓ 正确:逐个打开冲突文件读懂两边改动,手动取舍。可用 git mergetool 调起可视化工具辅助对比。

11. 实战演练:完整的多电脑同步流程

把前面所有环节串成一次完整的演练。模拟两台电脑交替开发一天的全过程,每步都有命令和输出。

电脑A
创建+首次推送
电脑B
克隆+修改+推送
电脑A
拉取+继续开发
两机交替
日常同步

步骤一:电脑A 创建项目并首次推送

Bash · 电脑A
1
2
3
4
5
6
7
8
9
10
gitinit notes &&cd notes
echo"# 学习笔记" > README.md
gitadd .
gitcommit-m"首次提交"
gitremoteadd origin git@github.com:zhangsan/notes.git
gitpush-u origin main
# 到此,代码已上传到 GitHub

步骤二:电脑B 克隆、修改并推送

Bash · 电脑B
1
2
3
4
5
6
7
gitclone git@github.com:zhangsan/notes.git
cd notes
echo"- Git 基础" >> README.md
gitadd .
gitcommit-m"添加 Git 基础章节"
gitpush

步骤三:电脑A 拉取最新代码继续开发

Bash · 电脑A
1
2
3
4
5
6
7
8
gitpull
gitlog--oneline
echo"- Git 分支" >> README.md
gitadd .
gitcommit-m"添加 Git 分支章节"
gitpush
# 继续在最新基础上开发
终端输出
e4f5g6h (HEAD -> main, origin/main) 添加 Git 分支章节
b3c4d5e 添加 Git 基础章节
a1b2c3d 首次提交

这就是多电脑同步的完整闭环:A 起步 → B 接手 → A 拉取续写。只要每次开工先 pull、收工前 push,两台电脑就能持续交替协作,代码始终合流在远程中转站上。

💡 小贴士
用 .gitignore 文件排除不需要同步的内容(如 node_modules、.env、编译产物),避免把大文件或敏感信息推上远程。
💡 小贴士
用别名缩短常用命令:git config --global alias.st status 之后输入 git st 即可查状态,多电脑都配上一份,操作更顺手。
📖 知识回顾
git initgit clonegit addgit commitgit pushgit pullgit fetchgit remotegit statusgit loggit configssh-keygengit merge.gitignore
✏️ 动手练习
🟢 基础验证
在一台电脑上安装 Git,用 git init 创建仓库,写一个文件并完成首次提交,最后用 git log --oneline 查看历史。
🟡 组合应用
用同一台电脑的两个目录模拟两台电脑:A 目录 push 后,B 目录 clone,修改后 push,再回 A 目录 pull。完整走通 push → clone → pull 同步流程。
🔴 开放挑战
在 GitHub 上创建仓库并邀请一位朋友作为协作者,两人同时修改同一文件并处理一次真实的合并冲突。体验真实协作中的 pull → 冲突 → 手动解决 → push 全过程。
关注公众号获取更多内容