通常我将我的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也没有切换分支,所以我为什么要这样做呢?
问题是:
答案 0 :(得分:0)
你正在推动一个非裸露的回购,git发出这个警告只是为了防止对master
上的[other machine]
分支进行静默修改,而有人可能正在处理它。
&#34; Switch branch&#34;意思是:继续[other machine]
,并告诉您的实时回购,您目前没有在master
分支机构工作。
以下是传输提交的其他一些方法:
[other machine]
[my machine]
和拉
[other machine]
上创建一个裸仓库,从[my machine]
推送到此裸仓库,然后在[other machine]
从此裸仓库本地拉出