【发布时间】:2010-01-24 13:08:30
【问题描述】:
我想做的事: 在我的(ssh 远程访问)大学机器上,我从事一个项目,我已将其置于 git 源代码控制之下(git init,然后在每次更改后 git commit -a ,一切正常)。现在我想在家里的私人机器上处理那个项目。应该很简单,因为 git 是分布式 vcs,对吧?
我阅读了git tutorial,它建议在大学做一个git pull,以便在家完成更改。那是行不通的,因为我家中的机器无法远程访问。所以我想我会在家里做一个git push。这行得通,但它很复杂(在大学之后需要git reset,等等),since non-bare repositories are not designed for pushing。
问题 1: 有没有比在我的设置中添加额外的裸存储库更简单的方法(这意味着我有:(1)“主要”裸存储库,(2)大学工作副本,(3)家庭工作副本)?
问题 2: 如果确实需要该设置,我如何创建该裸存储库(我猜是git clone --bare)并将其设为“主”存储库 ,即告诉工作副本git push 应该去那里。
PS: 我知道有一个 post-receive 钩子可以让你推入非裸仓库。我试过了,但效果不好,因为大学机器上的 git 版本很旧(1.5.5.6)并且错过了钩子使用的一些命令。更新不是一种选择,无论如何我更喜欢没有第三方脚本的解决方案。
【问题讨论】:
-
@rant: 但是如果你忘记更新一次,svn 就不能变基。
-
在类似的场景中,我使用了非裸仓库(即使不推荐),因为它仍然比中间仓库更容易,将
receive.denyCurrentBranch=warn添加到推送到回购,直到现在都没有问题。对git reset --hard的需求起初感觉有点奇怪,但考虑到这些选项,它仍然是我最好的工作流程。确保在推入之前已提取工作副本更改。还有什么,即等是什么意思?
标签: git repository dvcs git-push