如何在中央git repo(GitHub / BitBucket)不可用时同步git存储库

时间:2018-01-10 10:15:53

标签: git github ssh bitbucket

通常我将我的git-changes从我的开发机器推送到BitBucket。这会触发webhook到我的其他机器,从而启动BitBucket的拉动。

[my machine]
   \
    +---1.push--> [bitbucket] <---3.pull------+
                       \                       \
                        +--2.webhook--> [other machine]

然而,BitBucket可能not be available sometimes。所以我也希望能够直接将我的更改推送到其他计算机。我用来与BitBucket同步的我的git协议是SSH,我也有一个SSH连接到我的其他机器。

所以这就是我想要完成的事情。

[my machine]
   \
    +---push--> [other machine]

推送我使用的命令是:

git push ssh://USERNAME@SSH_SERVER_NAME/path/to/remote/repository

如果没有要同步的内容,我会收到消息Everything up-to-date。好的,很好。但是当有新的提交推送时,我收到一条错误消息(为简洁起见删除了一些行)。

! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://USERNAME@SSH_SERVER_NAME/path/to/remote/repository'

有人建议改变分支,但我不确定我是否在这里做正确的事情。切换分支听起来很奇怪,因为BitBucket也没有切换分支,所以我为什么要这样做呢?

问题是:

  1. 如何推送更改,跳过正常的BitBucket工作流程?
  2. BitBucket可以追赶这些变化吗?我从两台机器上拉/推足以恢复正常&#34;工作流?

1 个答案:

答案 0 :(得分:0)

你正在推动一个非裸露的回购,git发出这个警告只是为了防止对master上的[other machine]分支进行静默修改,而有人可能正在处理它。

&#34; Switch branch&#34;意思是:继续[other machine],并告诉您的实时回购,您目前没有在master分支机构工作。

以下是传输提交的其他一些方法:

  • [other machine]
  • 继续[my machine]
  • [other machine]上创建一个裸仓库,从[my machine]推送到此裸仓库,然后在[other machine]从此裸仓库本地拉出