我正在尝试建立工作流程来创建新项目,并通过Git将旧项目设置为版本控制。除了一步之外,一切都变得有意义了。当我创建一个新项目时,在其中初始化Git并执行初始提交,然后执行git clone --bare ./myproject //myserver/myshare/myproject.git。然后我设置了一个遥控器git remote add origin //myserver/myshare/myproject.git。这些似乎工作得很好。但是,当我执行git branch -a时,它没有显示远程上有一个主分支。
我现在解决这个问题的方法是,我只是git clone //myserver/myshare/myproject.git到一个不同的位置,遥控器已经设置好了,并且主分支存在于遥控器上。我不知道可能出了什么问题,特别是因为唯一的区别似乎是遥控器的设置方式。
提前感谢!
发布于 2012-06-20 11:18:21
没什么问题。从git clone手册页:
--bare
Make a bare GIT repository. That is, instead of creating <directory> and placing the administrative files in <directory>/.git, make the <directory>
itself the $GIT_DIR. This obviously implies the -n because there is nowhere to check out the working tree. Also the branch heads at the remote are
copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin/. When this option is used, neither remote-tracking
branches nor the related configuration variables are created.裸存储库不会将master提交指针映射到refs/remotes/origin/master,但它们不必这样做。简单的repos是vital when setting up remotes that others might push to or pull from,,但是they aren't where you do day-to-day dev work.,听起来你好像有一个origin。除非您正在设置另一个遥控器,否则请坚持使用本地存储库的git clone //myserver/myshare/myproject.git。
发布于 2021-03-13 22:49:18
来自git branch帮助:
-a,--all :列出远程跟踪和本地分支
-l,--list :列出分支机构名称
-r,--remotes :对远程跟踪分支执行操作
似乎没有列出远程存储库上的分支的选项。但是,如果分支在裸克隆期间位于您的本地存储库中,那么分支就在那里。诀窍是要注意这里的措辞。远程跟踪。git branch -a所做的是向您以及您的本地分支显示您为跟踪远程分支而设置的任何分支-顺便说一句,这不是git remote add <name> <url>命令所做的。这只是设置了一个遥控器。没有分支跟踪。
所以,为了真正做你真正想做的事情,你需要这样的东西:
(somehow)cd //myserver/myshare/myproject.git && git branch --list
或者,您可以检查//myserver/myshare/myproject.git/refs/heads或//myserver/myshare/myproject.git/packed-refs以确认分支是否存在。
最后,要设置一个共享存储库,而不是一个可以使用的存储库,git clone --bare是正确的方法。如果没有--bare选项,在克隆之后,git会签出克隆的存储库的头分支的工作树,这在服务器上通常是不需要的,也没有意义。
https://stackoverflow.com/questions/11110477
复制相似问题