git和 github 相关

2026年9月28日 · 作者 Taylor Yang

整理 Windows 与 Mac 通过 GitHub 同步代码的 Git 操作步骤,涵盖拉取、提交、推送和多设备协作。

Windows + Mac 使用 GitHub 多设备同步代码操作手册

一、最终要实现什么

目标不是让 Windows 和 Mac 直接互相传文件,而是让 GitHub 做中转站:

Windows
   ↓ push
 GitHub
   ↑↓
Mac
   ↑ pull

比如:

公司 Windows 修改代码
→ 上传 GitHub
→ 回家 Mac 下载最新版
→ Mac 继续修改
→ 上传 GitHub
→ 第二天 Windows 再下载最新版

以后日常真正需要记住的核心流程只有:

开始工作前:
git pull

修改文件……

工作结束:
git add .
git commit -m "说明这次改了什么"
git push

二、Git 和 GitHub 分别是什么

1.Git

Git 是安装在电脑上的版本管理软件。

它负责记录:

哪些文件发生了变化
每次保存了什么版本
谁提交了这个版本
什么时候提交的

可以把 Git 理解成“代码存档系统”。

例如:

版本1:项目刚创建
版本2:完成首页
版本3:增加产品页面
版本4:修复手机端菜单

以后即使改坏了,也能知道以前版本是什么样。


2.GitHub

GitHub 是网上的代码仓库。

它负责把 Git 管理的代码存到网上,让另外一台电脑也能拿到。

所以关系是:

项目文件
↓
Git 管理版本
↓
GitHub 存到网上
↓
另一台电脑下载

三、Windows 第一次安装 Git

打开:

https://git-scm.com/

下载 Git for Windows。

普通 Intel / AMD Windows 电脑选择:

x64 Setup

安装时大部分选项保持默认即可。

比较重要的是 PATH 设置,保持类似:

Git from the command line and also from 3rd-party software

这样 PowerShell、CMD、VS Code、Codex 等软件都能直接使用 git。

安装完成以后,关闭原来的终端,重新打开一个终端。

输入:

git --version

如果出现:

git version 2.xx.x

说明安装成功。


四、第一次让 Git 管理一个项目

假设项目位于:

C:\Users\Administrator\Desktop\测试

先进入项目:

cd "C:\Users\Administrator\Desktop\测试"

然后:

git init

如果看到:

Initialized empty Git repository...

说明成功。

git init 做了什么

它会在项目里面创建一个隐藏文件夹:

.git

结构大概变成:

测试
├── .git
├── ce.txt
├── src
└── 其他文件

.git 里面保存:

提交历史
版本信息
分支
GitHub 地址
Git 设置

所以:

git init

并不是上传代码。

它只是表示:

从现在开始,让 Git 管理这个项目。


五、第一次把文件加入 Git

先查看状态:

git status

如果看到:

Untracked files:
    ce.txt

意思是:

Git 看见了这个文件,但是还没有把它加入版本管理。

执行:

git add ce.txt

如果需要一次加入项目里所有修改,可以:

git add .

这里的:

.

代表当前项目中的所有变化。

然后检查:

git status

如果出现:

Changes to be committed:
    new file: ce.txt

说明这个文件已经进入“准备提交区”。


六、第一次提交版本

执行:

git commit -m "第一次提交"

这里:

commit

可以理解成正式建立一个存档点。

而:

-m "第一次提交"

是给这个版本写备注。

例如以后可以这样写:

git commit -m "完成首页"

或者:

git commit -m "修复手机菜单"

七、如果 Git 提示不知道你是谁

第一次提交时可能看到:

Please tell me who you are.

说明 Git 不知道提交者是谁。

设置名字:

git config --global user.name "你的名字"

例如:

git config --global user.name "Yepsoso"

设置邮箱:

git config --global user.email "你的GitHub邮箱"

例如:

git config --global user.email "example@gmail.com"

以后这台电脑上的 Git 项目默认都使用这个身份。

验证:

git config --global user.name
git config --global user.email

然后重新提交:

git commit -m "第一次提交"

八、把 master 改成 main

有些 Git 默认创建:

master

现在 GitHub 通常使用:

main

统一一下:

git branch -M main

检查:

git branch

如果看到:

* main

说明成功。


九、在 GitHub 创建仓库

登录 GitHub。

点击:

右上角 +
→ New repository

填写仓库名称,例如:

tongbu

如果项目不希望公开,选择:

Private

如果本地项目已经执行过 git init 和 git commit,创建 GitHub 仓库的时候:

不要创建 README。

不要自动创建 .gitignore****。

不要自动添加 License。

保持远程仓库为空。

创建完成后会得到类似地址:

https://github.com/Yepsoso/tongbu.git

十、把本地项目连接 GitHub

在本地项目终端执行:

git remote add origin https://github.com/Yepsoso/tongbu.git

意思是:

把这个 GitHub 仓库添加为远程仓库,并给它起名叫 origin。

验证:

git remote -v

正常情况下会看到:

origin  https://github.com/Yepsoso/tongbu.git (fetch)
origin  https://github.com/Yepsoso/tongbu.git (push)

其中:

fetch

代表下载。

push

代表上传。


十一、如果已经有 origin,怎么换 GitHub 地址

如果看到:

error: remote origin already exists.

不要再次执行 remote add。

如果需要换成另一个 GitHub 仓库:

git remote set-url origin https://github.com/Yepsoso/tongbu.git

然后检查:

git remote -v

十二、第一次上传 GitHub

执行:

git push -u origin main

意思分别是:

git push
= 上传

origin
= 上传到对应 GitHub 仓库

main
= 上传 main 分支

-u
= 记住本地 main 和 GitHub main 的关系

第一次成功以后,以后只需要:

git push

不需要每次重新写完整命令。

上传成功后打开 GitHub 仓库刷新。

如果文件已经出现,说明:

本地电脑
↓
GitHub

已经打通。


十三、GitHub Token 一定不要发给别人

GitHub 的 Personal Access Token(个人访问令牌,PAT)一般长得类似:

github_pat_xxxxxxxxxxxxx

它不是账号 ID。

也不是验证码。

它本质上相当于一个 GitHub 专用密码。

所以:

不要发到聊天里。

不要发给别人。

不要提交到 Git 仓库。

不要写进代码。

如果 Token 已经泄露:

GitHub
→ Settings
→ Developer settings
→ Personal access tokens

找到对应 Token,立即:

Delete / Revoke

然后重新生成新的。


十四、第二台电脑不要再 git init

假设 Windows 已经把项目上传到了:

https://github.com/Yepsoso/tongbu.git

现在要在 Mac 使用。

不要执行:

git init

因为远程仓库已经存在了。

正确做法是:

git clone https://github.com/Yepsoso/tongbu.git

clone 的作用是一次完成:

下载代码
+
下载 Git 历史
+
设置远程仓库
+
连接 main 分支

十五、Mac 第一次连接私有 GitHub 仓库

如果仓库是 Private,Mac 第一次可能出现:

Repository not found

很多时候并不是仓库真的不存在,而是:

Mac 还没有登录 GitHub,因此没有权限读取这个私有仓库。

可以使用 GitHub CLI 登录。

先检查:

gh --version

如果已经安装,执行:

gh auth login

然后选择:

GitHub.com

协议选择:

HTTPS

允许 Git 使用 GitHub 登录信息。

浏览器会打开 GitHub 授权页面。

确保登录的是正确账号:

Yepsoso

如果网页要求填写设备验证码,就回到 Mac 终端找到类似:

ABCD-EFGH

这样的验证码。

把终端里的验证码填到 GitHub 网页。

注意:

这个验证码:

授权完成以后验证:

gh auth status

如果看到已经登录:

Logged in to github.com account Yepsoso

说明成功。

然后再:

git clone https://github.com/Yepsoso/tongbu.git

十六、git clone 到底下载到哪里

假设 Mac 当前终端是:

yep@yepdeMacBook-Air ~ %

这里的:

~

代表用户主目录:

/Users/yep

如果执行:

git clone https://github.com/Yepsoso/tongbu.git

Git 会自动创建:

/Users/yep/tongbu

可以用:

pwd

查看当前目录。

用:

ls

查看当前目录的文件。

如果想在 Finder 中打开项目:

open ~/tongbu

进入项目:

cd ~/tongbu

十七、Mac 修改文件后怎么上传 GitHub

假设已经进入:

cd ~/tongbu

先修改文件。

然后检查:

git status

比如看到:

modified: ce.txt

说明 Git 检测到了修改。

然后:

git add .

再:

git commit -m "Mac修改"

最后:

git push

整个流程:

修改文件
↓
git add .
↓
git commit
↓
git push
↓
GitHub

十八、一条命令直接提交并推送

如果已经确定当前项目没有需要排除的文件,可以直接:

git add . && git commit -m "update" && git push

它相当于连续执行:

git add .

把所有修改加入提交。

git commit -m "update"

创建一个版本。

git push

上传 GitHub。

所以以后改完代码,可以直接:

git add . && git commit -m "update" && git push

更推荐把 update 改成具体内容,例如:

git add . && git commit -m "修改产品详情页" && git push

这样以后查看历史时能知道每一次改了什么。


十九、Windows 怎么拿到 Mac 的修改

假设 Mac 已经:

git push

Windows 上进入对应项目:

cd "C:\Users\Administrator\Desktop\测试"

然后:

git pull

pull 可以理解成:

从 GitHub 把最新版本拉到这台电脑。

整个过程:

Mac 修改
↓
git push
↓
GitHub
↓
Windows git pull
↓
Windows 获得最新版

反过来完全一样。

Windows 修改以后:

git add .
git commit -m "Windows修改"
git push

然后 Mac:

git pull

二十、以后两台电脑的标准工作流程

这是以后最重要的一套流程。

1.开始工作之前

先进入项目。

然后:

git pull

为什么?

因为另一台电脑可能已经修改并上传了最新版本。

如果不先 pull,你可能在旧代码上继续修改,之后容易发生冲突。


2.正常修改项目

正常使用:

VS Code
Codex
Cursor
其他编辑器

修改即可。

Git 不要求你通过某个专门软件修改文件。


3.修改完成以后

先查看:

git status

确认有哪些文件变化。

然后:

git add .

提交:

git commit -m "说明这次做了什么"

上传:

git push

或者直接:

git add . && git commit -m "update" && git push

二十一、项目文件夹可以移动吗

可以。

例如现在项目:

/Users/yep/tongbu

移动到:

/Users/yep/Desktop/tongbu

没有问题。

因为 Git 信息保存在项目内部:

tongbu
├── .git
├── ce.txt
├── src
└── ...

只要整个:

tongbu

文件夹一起移动:

.git

也会跟着移动。

Git 历史、GitHub 地址、分支等都不会丢。


二十二、项目文件夹可以改名字吗

可以。

比如:

tongbu

改成:

公司网站

Git 不在乎项目外层文件夹叫什么。

只要里面:

.git

还存在即可。

移动或改名以后进入新路径:

cd "新的项目路径"

然后:

git status

如果看到:

On branch main

说明 Git 仍然正常。

再检查:

git remote -v

如果还是:

origin https://github.com/Yepsoso/tongbu.git

说明 GitHub 连接也正常。


二十三、什么情况下移动会把 Git 搞丢

不要只复制项目里面的普通文件,却漏掉隐藏的:

.git

例如原来:

tongbu
├── .git
├── ce.txt
└── src

如果只把:

ce.txt
src

复制到新文件夹:

新项目
├── ce.txt
└── src

那么新文件夹已经不是原来的 Git 仓库。

执行:

git status

可能出现:

fatal: not a git repository

所以:

要移动 Git 项目,就移动整个项目文件夹。


二十四、.gitignore 是什么

.gitignore 是用来告诉 Git:

哪些文件不要上传,也不要进入版本管理。

例如 Node.js 项目通常应该忽略:

node_modules/
.env
.env.local

dist/
build/
.next/

.DS_Store
Thumbs.db

特别注意:

.env

经常包含:

API Key
数据库密码
密钥
Token

不要上传 GitHub。

例如:

OPENAI_API_KEY=xxxx
DATABASE_PASSWORD=xxxx

这些内容一旦进入公开仓库,就可能泄露。


二十五、几个最常用命令到底是什么意思

git status

查看现在有哪些文件发生变化。


git add .

把当前所有修改准备提交。


git commit -m "说明"

创建一个本地 Git 版本。


git push

把本地版本上传 GitHub。


git pull

从 GitHub 下载最新版本。


git clone 仓库地址

第一次把整个 GitHub 项目下载到一台新电脑。


git remote -v

查看这个项目现在连接的是哪个 GitHub 仓库。


git log --oneline

查看以前提交过的版本。

例如:

a832abc 修复首页
b982def 增加产品页面
c371abc 第一次提交

二十六、最容易混淆的三个动作

这三个一定要分清。

git add

意思:

这些修改我准备保存。

还没有正式保存版本。


git commit

意思:

正式保存成一个 Git 版本。

但是这个版本仍然只在当前电脑上。


git push

意思:

把已经 commit 的版本上传 GitHub。

所以:

修改文件
↓
add
↓
commit
↓
push

缺一不可。


二十七、推荐以后直接这样使用

每次打开电脑准备工作:

cd "你的项目路径"
git pull

正常修改项目。

完成以后:

git status

确认变化没问题。

然后:

git add . && git commit -m "这次修改的内容" && git push

换到另一台电脑:

cd "项目路径"
git pull

继续工作。

整个多设备同步逻辑就是:

电脑 A

git pull
↓
修改
↓
git add .
↓
git commit
↓
git push

        ↓

      GitHub

        ↓

电脑 B

git pull
↓
修改
↓
git add .
↓
git commit
↓
git push

只要记住一句:

开始工作先 pull,结束工作再 push。


二十八、目前这套环境的实际情况

GitHub 账号:

Yepsoso

测试远程仓库:

https://github.com/Yepsoso/tongbu.git

Windows 已经能够:

commit
push

Mac 已经完成 GitHub 授权,并能够:

clone
pull
push

所以目前 Windows ↔ GitHub ↔ Mac 的基本同步链路已经打通。

以后真正项目也按照相同方法操作即可。


Untitled