【问题标题】:push from bare git repository从裸 git 存储库推送
【发布时间】:2018-08-29 17:09:13
【问题描述】:

我正在尝试使用一个裸 git repo 作为我的工作 repo 和源之间的桥梁

origin ----- bare repo ----- working repo

我可以进入工作存储库并从裸存储库中推拉。但是我还需要进入裸仓库并从原点推送和拉取,这可能吗?

编辑

到目前为止我已经尝试过什么......

创建裸仓库

mkdir bare_repo
cd bare_repo
git init --bare
git remote add origin path_to_origin
git fetch origin

创建工作仓库

git clone path_to_bare

我收到警告:“远程 HEAD 引用不存在的 ref,无法结帐”,但它仍然会创建工作存储库

git pull origin master

我收到一个错误:“找不到远程参考主控”

更新

原来我有一个写权限问题,所以我无法从工作仓库推送到裸仓库。所以我一般我需要在提问之前检查我所有回购位置的权限......现在一切正常......

有一件事是,如果其他人将提交推送到源,我将需要从我的裸仓库中获取该提交并更新我的裸仓库上的分支。获取很简单

# in bare repo
git fetch origin master

但我不知道更新分支的最佳方法。我不能拉,因为没有工作目录。我可以使用

获取新提交的哈希值
git ls-remote

然后手动将分支指向它

git branch -f master <hash>

但似乎会有更好的方法。

但我认为这应该是一个单独的问题。

【问题讨论】:

  • 裸回购的目的是什么?
  • 这是一个很长的故事,我认为它无关紧要。问题是,git能做到吗?
  • 你有没有尝试过?对于推送或拉取操作,您不需要工作目录,因此在这种情况下,裸仓库和您的工作仓库之间应该没有任何区别。
  • @chepner 好的,我已经将到目前为止我尝试过的内容添加到我的问题中
  • 除非bare_repo 在另一个存储库中,否则git remote 命令甚至不应该工作。

标签: git git-bare


【解决方案1】:

您可以使用以下代码将原始存储库克隆为裸存储库:git clone --bare &lt;repo url&gt;

【讨论】:

  • 试过这个。当我尝试将新提交从工作仓库推送到裸仓库时,我得到:“远程解包失败:无法创建临时对象目录”
  • 实际上这确实有效,请参阅我的更新。您也可以创建一个空的裸仓库并手动添加遥控器。
猜你喜欢
  • 2011-01-10
  • 2012-06-01
  • 2020-02-22
  • 1970-01-01
  • 2011-04-29
  • 2013-12-18
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
相关资源
最近更新 更多