19

当我尝试 'git push origin master' 到我的外部磁盘上的远程存储库时,出现 git 警告,指出在下一个版本的 git 中默认拒绝检查存储库。在外部磁盘上,我已签出项目,我想将我在计算机上所做的更改发送到这些存储库。'git push origin master' 不是正确的方法吗?我是否必须在我的外部磁盘上的存储库上“git pull ...”?所以我不能推动更​​改,而只是拉动它们?仅使用“裸”存储库不同吗?因此,如果我的外部磁盘上的存储库是一个裸存储库,我可以将更改推送到它吗?我理解正确吗?

4

2 回答 2

23

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

原因是推送过程无法直接访问工作树,因此工作树下的索引和分支头会发生变化。当您随后转到工作树时,看起来工作树已经撤消了推送的更改以及真正处于开发中的任何更改。这使得很难将两组更改分开。

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

于 2010-01-27T18:59:17.167 回答
6

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

于 2010-01-27T14:55:53.747 回答