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

中心Git仓库不可用时,如何同步仓库及恢复正常工作流?

嘿,这个问题我之前折腾过,咱们一步步拆解解决:

1. 如何跳过正常的BitBucket工作流推送变更?

你遇到的报错! [remote rejected] master -> master (branch is currently checked out),核心原因是:Git默认禁止推送到一个已经检出了工作目录的分支——因为如果远程机器正在编辑这个分支的文件,推送会直接覆盖掉未提交的内容,风险很高。而BitBucket上的仓库是「裸仓库(bare repository)」,它没有工作目录,专门用来接收推送,所以不需要切换分支。

解决这个问题有两个靠谱方案:

  • 方案一:把另一台机器的仓库改成裸仓库(推荐)
    裸仓库是Git专门用于远程协作的仓库类型,没有工作目录,不会有推送冲突。操作步骤:

    1. 登录到另一台机器,进入目标仓库目录
    2. 先备份当前的工作目录(如果需要保留的话):mv .git ../repo-backup.git,然后把原仓库的文件移到备份目录
    3. 把仓库转为裸仓库:git config --bool core.bare true
    4. 之后你就可以正常用git push ssh://USERNAME@SSH_SERVER_NAME/path/to/remote/bare-repository推送了
  • 方案二:允许推送到当前检出的分支(适合临时场景)
    如果不想改成裸仓库,可以修改远程仓库的Git配置,让它允许更新当前检出的分支:

    1. 登录到另一台机器,进入目标仓库目录
    2. 执行命令:git config receive.denyCurrentBranch updateInstead
      这个配置会让Git在你推送时,自动把当前检出分支的工作目录更新到推送的版本,但要注意:远程机器上不能有未提交的本地变更,否则会触发冲突。

2. BitBucket后续能否同步这些变更?

完全可以,只要把另一台机器上的变更同步到BitBucket即可,有两种方式:

  • 登录到另一台机器,把BitBucket添加为远程仓库:git remote add bitbucket ssh://bitbucket-username@bitbucket.org/your-repo.git,然后执行git push bitbucket master把变更推上去
  • 在你的本地机器上,把另一台机器的仓库作为远程拉取:git remote add backup-machine ssh://USERNAME@SSH_SERVER_NAME/path/to/repo,然后git pull backup-machine master,再推送到BitBucket:git push origin master

3. 从两台机器分别执行拉取/推送操作是否足以恢复“正常”工作流?

是的,但要注意同步顺序,避免出现分支分歧:

  1. 首先确保另一台机器上的所有变更都已经推送到BitBucket(参考上面的方法)
  2. 在你的本地机器上,拉取BitBucket的最新内容,确保和另一台机器的代码一致
  3. 之后恢复原来的工作流:你推送到BitBucket,触发webhook让另一台机器拉取
  4. 后续操作时,要避免同时直接推送到另一台机器和BitBucket,确保所有变更都先同步到BitBucket,再由另一台机器拉取,这样就能保持三者(本地、BitBucket、另一台机器)的代码一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:53:15