2

我正在尝试建立用于创建新项目和将旧项目设置为通过 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到另一个位置并且已经设置了遥控器,并且主分支存在于遥控器上。我不知道可能出了什么问题,特别是因为唯一的区别似乎是遥控器的设置方式。

提前致谢!

4

2 回答 2

2

没有错误。从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,但它们不是必须的。在设置其他人可能push使用或pull使用的遥控器时,裸存储库至关重要它们不是您进行日常开发工作的地方。听起来你有一个origin. 除非您要设置另一个遥控器,否则请坚持使用git clone //myserver/myshare/myproject.git您的本地存储库。

于 2012-06-20T03:18:20.853 回答
0

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 后会检查克隆存储库的 HEAD 分支的工作树,这通常是不需要的,在服务器上也没有意义。

于 2021-03-13T14:49:18.153 回答