如何检查存储库是否裸露?

时间:2009-12-02 04:45:18

标签: git

我收到了警告

warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated.  This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning:   'nothing'  : Do not push anything
warning:   'matching' : Push all matching branches (default)
warning:   'tracking' : Push the current branch to whatever it is tracking
warning:   'current'  : Push the current branch

这是(我认为)远程不是裸露的警告。然而,我打算将远程视为裸,而目录(格式为foo.git)中没有.git目录。我如何检查它是否裸露?

额外信息:远程存储库位于具有git 1.5.4.3的计算机上,本地存储库具有git 1.6.3.3。两台机器都是Ubuntu - 本地机器是Karmic Koala,远程机器是旧版本。

5 个答案:

答案 0 :(得分:37)

这听起来不是你的问题,但要真正回答你在标题中提出的问题:你可以跑...

$ git rev-parse --is-bare-repository

...查询回购是否裸露。返回'true'或'false'。

答案 1 :(得分:28)

如何检查它是否裸露?

正如answer below中提到的那样{upvoted},如果您有权访问远程仓库,则可以在其中运行:

git rev-parse --is-bare-repository 

早在jberryman(2007年9月)和commit 493c774, Git 1.5.3commit 7ae3df8引入。

  

当存储库裸露时为“true”,否则为“false”。


您可以使用(来自Matthias Lederhofer (matled)):

 git config --add push.default current

指定默认情况下要推送的内容。

或:

 git config --global push.default matching

如果您有许多存储库。

  

current:将当前分支推送到同名分支。

同时检查警告是否后面没有此git config中的错误消息。


所以你的目的地回购可能只是一个,但正如SO question所说:

  

当您执行git pullfetch, push和其他一些操作时,您需要为当前存储库指定refspec
  refspec描述了本地引用和远程引用之间的映射,因此您可以推送(或拉取等)主分支头并将其存储为原始分支头。基本上它是一种在回购之间映射分支的方法。

另请参阅“Sensible Git Refspecs”。


注意:它来自concept of bared shared repository in git

  

git push”进入当前已检出的分支将被默认拒绝   您可以通过在接收存储库中设置配置变量receive.denyCurrentBranch来选择在此类推送时应该发生的事情。

但我不认为这就是你现在所看到的。


如“Git1.6.3”(在底部)

中所述
  

要将其设为“真正的”裸仓库,只需删除.git以外的所有文件,然后删除mv .git/* .; rmdir .git
  最后,修改名为config的文件,将bare = false更改为bare = true

因此,如果您的目标个户网站的config文件为bare = true,那么这是一个简单的回购邮件。

答案 2 :(得分:3)

您收到的消息意味着您的远程存储库为空(与裸机无关)。当您第一次进入远程存储库时,您需要指定要推送的内容:

git push origin master

这会将您当前的主分支推送到远程存储库。 git push的后续调用将推送“匹配”分支,即如果远程存储库中存在“主”分支,则将推送本地“主”分支。

答案 3 :(得分:1)

 $ git config --get core.bare

答案 4 :(得分:0)

打开config目录中的.get文件,然后查找bare = true