git remote cluster&一个开发人员的笔记本电脑设置 - 为什么是“裸”存储库?

时间:2013-11-02 00:03:43

标签: git

我是Mercurial用户。我正在迁移到git,原因是我不会进入。

我主要是一个开发团队,虽然合作者的可能性在未来存在。我过去曾使用Mercurial来跟踪变化,并在笔记本电脑和大学集群上管理相同代码库的开发。

在Mercurial中,要保持我的笔记本电脑和群集最新,我会在笔记本电脑上创建一个存储库,将其克隆到群集,然后从(如果我一直在使用我的笔记本电脑)推送或拉(如果我一直在集群上工作)我的笔记本电脑并根据需要合并。

我已成功将我的mercurial存储库迁移到git。通过阅读网上的许多git讨论,它看起来像我(释义http://thelucid.com/2008/12/02/git-setting-up-a-remote-repository-and-doing-an-initial-push/

ssh me@university_cluster.edu
mkdir my_project.git
cd my_project.git
git init --bare
git update-server-info # I skipped this
exit

然后在我的笔记本电脑上:

cd my_project
git remote add origin me@university_cluster.edu:my_project.git
git push -u origin master

我的问题,然后:

这似乎比Mercurial更复杂。这真的是“最佳实践”方法吗?我认为分布式源代码控制(DSC)的整个想法是存储库直接相互通信,并且合并很容易。为什么“中间人”采用git“裸”存储库?这似乎导致必须在远程机器上维护两个目录(裸存储库和工作存储库),并且每次需要从一个平台切换到另一个平台时执行两倍的“事务”。也就是说,每台笔记本电脑< - >群集交换机都涉及推送到远程裸存储库,然后从远程裸存储库中拔出,之前我只是推(如果在我的笔记本电脑上完成)或拉(如果在我的笔记本电脑上启动)

我希望我不会邀请Mercurial / Git火焰战,我只是想用这个来理解git哲学。

1 个答案:

答案 0 :(得分:2)

推送更改时,Git不会更新远程仓库的工作副本。 (这使得很多事情变得更简单,并且远程回购的所有者没有在他面前改变文件。)非裸仓报将看到它的头部和工作副本与每次推送都不同步。所以除非你强迫它,否则Git不会推动非裸机回购。