Git只推送裸存储库?

时间:2010-01-27 14:47:12

标签: git git-push git-pull

当我尝试'git push origin master'到我的外部磁盘上的远程存储库时,git警告发出声明,在默认情况下拒绝检出存储库将在下一版本的git中被拒绝。在外部磁盘上我已经检查了项目,我想将我在计算机上所做的更改发送到这些reposiotry。 'git push origin master'不是正确的方法吗?我必须在外部磁盘上的存储库中“git pull ...”吗?所以我不能推动改变而只是拉动它们?只与'裸'存储库一起工作是不同的?因此,如果我的外部磁盘上的存储库是一个裸存储库,我可以推送更改吗?我理解得对吗?

2 个答案:

答案 0 :(得分:23)

仔细阅读警告。新的默认禁止仅限于推送到非裸存储库中当前已检出的分支。推送到非裸存储库中的任何其他分支是完全可以的。

这样做的原因是推送过程无法直接访问工作树,因此索引和分支头在工作树下会发生变化。当您随后转到工作树时,看起来工作树已经撤消了与正在开发的任何更改混合的更改。这使得分离这两组变化变得非常困难。

推向其他分支机构没有这样的缺点。然后,您可以转到该存储库,并根据需要将这些更改合并到已签出的分支中。

答案 1 :(得分:6)

您不应该推送到非裸存储库,因为推送只会更新存储库的内部状态,并且不会影响已检出的磁盘上的文件副本。因此,如果您在没有首先更新(通过git checkout)仓库中文件状态的磁盘副本的情况下开始在该仓库中工作,则可能会遇到问题。