1. 添加两个远程仓库(假设仓库 A 是 origin,仓库 B 是 backup)

1
2
git remote add origin https://github.com/your-company/main-repo.git
git remote add backup https://github.com/your-company/backup-repo.git

2. 设置 main 分支默认推送到 origin

1
git branch --set-upstream-to=origin/main main

3. 设置 v1.5.0 分支默认推送到 backup

1
git branch --set-upstream-to=github/v1.5 v1.5

4. 查看所有远程仓库

1
git remote -v

5. 查看所有分支的上游配置(最关键)

1
git branch -vv

如果你希望 git push 的行为按分支区分,但 git pull 依然从同一个地方拉取(比如都从 origin 拉),可以使用 pushRemote 配置(更精细控制)

1
2
# 查看 pushRemote 相关配置(如果有)
git config --list | grep pushRemote

当本地项目没有Git管理,但你想用远程仓库的main分支覆盖本地文件时,需要先初始化本地Git并关联远程仓库。以下是具体步骤:

操作步骤(请按顺序执行)

1. 初始化本地Git仓库

1
2
cd /path/to/your/local/project
git init

2. 添加远程仓库地址

1
2
git remote add origin <你的远程仓库URL>
# 例如: git remote add origin https://github.com/username/repo.git

3. 备份当前本地文件(重要!)

由于远程会覆盖本地,先备份以防万一:

1
2
cd ..
cp -r your_local_project your_local_project_backup

4. 强制拉取远程main分支覆盖本地

1
2
git fetch origin
git reset --hard origin/main

这条命令会:

  • 下载远程最新代码
  • 强制将本地工作目录重置为远程main分支的状态
  • 丢弃所有本地未提交的修改

5. (可选)清理未跟踪的文件

如果本地有远程不存在的文件,执行:

1
git clean -fd

这会删除所有未跟踪的文件和目录。

完整命令示例

1
2
3
4
5
6
cd /path/to/your/local/project
git init
git remote add origin https://github.com/username/repo.git
git fetch origin
git reset --hard origin/main
git clean -fd

注意事项

事项说明
本地文件会被覆盖执行后本地所有修改会丢失,务必先备份
远程仓库地址要正确git remote -v 检查是否设置正确
如果远程分支不是mainmain 替换为 master 或其他分支名
已有.git目录如果项目里已有.git(比如之前初始化过),跳过 git init,直接设置远程地址

如果之后想把本地作为新仓库推送到远程

如果你是想用本地覆盖远程(相反方向),操作是:

1
2
3
4
5
git init
git remote add origin <URL>
git add .
git commit -m "init"
git push -u origin main --force # 强制覆盖远程

Git 远端与本地分叉:保留双方内容的完整操作流程

前置检查:你的当前状态

  • 远端 main 分支有新提交
  • 本地 main 分支也有新提交
  • 本地工作区存在未提交的修改error: cannot rebase: You have unstaged changes

第一步:保存本地未提交的修改

由于 Git 不允许在未保存工作区状态时执行 rebase,先提交本地修改:

1
2
3
4
5
6
7
8
# 查看当前修改了哪些文件
git status

# 将所有修改加入暂存区
git add .

# 提交本地修改
git commit -m "WIP: 本地修改内容说明"
备选方案:如果修改还不完整,不想提交,可用 git stash 暂存,rebase 完成后用 git stash pop 恢复。

第二步:获取远端最新状态

1
git fetch origin

此命令仅下载远端更新,不会合并或改变本地代码。

第三步:将本地提交变基到远端最新提交之上

1
git rebase origin/main

此时 Git 会将你的本地提交"嫁接"到远端最新提交之后,保持历史为一条直线。

第四步:处理冲突(如果有)

如果 rebase 过程中提示冲突:

  1. 打开冲突文件,保留两边需要的内容(IDE 中会显示 <<<<<<<>>>>>>> 标记)
  2. 修改完成后执行:
1
2
git add .
git rebase --continue
  1. 如果冲突复杂想重来:
1
git rebase --abort   # 回到 rebase 前的状态

第五步:推送到远端

1
git push origin main

重要提醒

禁止操作原因
git push -f / git push --force会强制覆盖远端,导致同事的提交丢失
安全回退命令用途
git rebase --abort放弃 rebase,回到操作前状态
git merge --abort放弃 merge,回到操作前状态

完整命令速查(复制即用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 提交本地未保存的修改
git status
git add .
git commit -m "WIP: 本地修改内容说明"

# 2. 获取远端更新
git fetch origin

# 3. 变基
git rebase origin/main

# 4. 如有冲突:解决后执行
git add .
git rebase --continue

# 5. 推送
git push origin main