Git本地与Github远程仓库同步

一、同步流程

1、创建远程仓库

如果还没有远程仓库,先在 Github 上创建远程仓库

2、克隆远程仓库

首次使用远程仓库时,使用 git clone 命令将其克隆到本地:

HTTPS 方式:

1
git clone https://github.com/用户名/仓库名.git

SSH 方式(推荐):

1
git clone git@github.com:用户名/仓库名.git

如果你有现有的本地项目需要关联到新的远程仓库:

1
2
3
4
5
6
# 初始化本地仓库(如果还没有)
git init

# 添加远程仓库
git remote add origin https://github.com/用户名/仓库名.git # HTTP 方式
git remote add origin git@github.com:用户名/仓库名.git # SSH 方式

3、查看远程仓库信息

1
2
3
4
5
6
# 确认当前仓库的远程源
git remote -v

# 输出信息
origin https://github.com/用户名/仓库名.git (fetch)
origin https://github.com/用户名/仓库名.git (push)

4、提交

1
2
3
git add .
git commit -m "备注信息"
git push origin main

在本地创建的分支可能叫做 master,而在 Github 上的远程仓库的默认分支名为 main,这样 push 时会报如下错误

1
2
rror: src refspec main does not match any
error: failed to push some refs to 'github.com:用户名/仓库名.git'

通过 git branch 可查看当前分支名,若分支名字不同,可以用如下命令修改本地分支名称:

1
git branch -m master main

5、强制同步到远程版本

注意:此操作会覆盖本地所有未提交的更改,谨慎使用!

1
2
git fetch --all                # 获取所有更新
git reset --hard origin/main # 强制重置到远程main分支

验证同步状态:

1
2
git status                     # 检查工作区状态
git log --oneline -5 # 查看最近5次提交记录

二、同步冲突处理

1、下拉冲突

当执行 git pull 时,如果本地有未提交的更改且与远程更改冲突,会出现以下错误:

1
2
3
4
error: Your local changes to the following files would be overwritten by merge:
文件名
Please commit your changes or stash them before you merge.
Aborting

方案一:提交本地更改然后拉取(推荐)

1
2
3
4
5
6
7
8
# 1. 添加所有更改到暂存区
git add .

# 2. 提交更改
git commit -m "描述你的修改"

# 3. 拉取远程更新
git pull origin main

方案二:暂存本地更改然后拉取

1
2
3
4
5
6
7
8
# 1. 暂存当前更改
git stash

# 2. 拉取远程更新
git pull origin main

# 3. 恢复暂存的更改
git stash pop

方案三:放弃本地更改(谨慎使用)

方法A:使用 git reset --hard(传统方法)

1
2
3
4
5
# 1. 放弃所有本地更改
git reset --hard HEAD

# 2. 拉取远程更新
git pull origin main

方法B:使用 git restore(Git 2.23+,推荐)

1
2
3
4
5
# 1. 放弃工作区的所有更改
git restore .

# 2. 拉取远程更新
git pull origin main

2、合并冲突

当远程和本地修改了相同文件的相同部分时,会产生合并冲突:

冲突解决流程:

  1. 拉取时遇到冲突:
1
git pull origin main # 如果提示冲突,Git会自动标记冲突文件
  1. 查看冲突状态:
1
git status # 会显示哪些文件有冲突
  1. 手动打开冲突文件,查找冲突标记:

冲突标记格式:

1
2
3
4
5
<<<<<<< HEAD
你的本地更改内容
=======
远程仓库的更改内容
>>>>>>> origin/main
  1. 解决冲突:
  • 选择保留本地版本、远程版本,或手动合并两者
  • 删除所有冲突标记(<<<<<<<=======>>>>>>>
  • 保存文件
  1. 标记冲突已解决并完成合并:
1
2
git add .
git commit -m "解决合并冲突"

3、推送冲突

当推送时远程仓库有新的提交,会出现non-fast-forward错误:

错误信息示例:

1
2
3
! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'origin'
hint: Updates were rejected because the tip of your current branch is behind

解决方法:

方法1:拉取合并后推送(推荐)

1
2
git pull origin main    # 先拉取远程更新
git push origin main # 再推送本地更改

方法2:使用rebase保持线性历史

1
2
git pull --rebase origin main    # 变基合并
git push origin main

方法3:强制推送(危险,谨慎使用)

1
git push --force origin main     # 强制覆盖远程仓库

强制推送会覆盖远程更改,可能导致其他人的工作丢失!


Git本地与Github远程仓库同步
http://example.com/2026/02/13/Git本地与Github远程仓库同步/
作者
Yu xin
发布于
2026年2月13日
许可协议