You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过电脑A实现从电脑B向git repository推送代码?

解决通过A中转向Git服务器推送代码的正确流程

你当前遇到的变更显示异常、推送前需撤销变更的问题,核心原因是把非裸Git仓库当作中转推送目标——非裸仓库带有工作区,接收推送后工作区与分支状态不一致,进而引发冲突和显示错乱。以下是标准化的中转推送流程:

一、在A上创建中转裸仓库(关键步骤)

裸仓库无工作区,专门用于接收推送,不会产生工作区冲突:

  • 在A的共享文件夹内执行命令创建裸仓库:
    git init --bare shared-repo.git
    
    (惯例用.git结尾命名裸仓库,方便识别)
  • 为裸仓库关联上游Git服务器:
    cd /path/to/shared-folder/shared-repo.git
    git remote add origin <Git服务器的仓库地址>
    git fetch origin
    git branch --set-upstream-to=origin/main main
    
    (若你的主分支是master,替换对应字段即可)

二、在B上配置本地仓库

  • 从A的共享裸仓库克隆到B本地:
    git clone //A的共享路径/shared-repo.git local-repo
    
  • 进入B的本地仓库,配置专属提交用户信息(避免与A的用户混淆):
    cd local-repo
    git config user.name "你的姓名"
    git config user.email "你的邮箱"
    

三、日常推送流程

B端提交并推送到A中转仓库

  1. 开发完成后,提交本地变更:
    git add .
    git commit -m "feat: 新增XX功能"
    
  2. 拉取中转仓库的最新代码(避免冲突),再推送:
    git pull origin main
    git push origin main
    

A端推送到Git服务器

进入A的共享裸仓库目录,直接推送到上游服务器:

cd /path/to/shared-folder/shared-repo.git
git push origin main

额外注意事项

  • B端每次推送前必须先拉取,避免与其他提交产生冲突
  • 若需从Git服务器拉取最新代码到B,先在A的裸仓库执行git pull origin main,再在B端执行git pull origin main
  • 禁止在共享文件夹使用非裸仓库做中转,这是引发你之前异常的核心原因

内容的提问来源于stack exchange,提问作者Jiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19