0

我希望有以下设置与 git 一起使用:对于给定的项目,我希望将我的“原始”存储库放在我工作的台式计算机的目录中 ($desktop)。然后我希望能够从家里或其他任何地方($laptop)访问、拉取和推送这个存储库。

对于我在其他问题中看到的内容,该过程通常涉及在我的桌面上创建一个裸 git 存储库,使用

$desktop > git init -bare

但是我的理解是,这会产生一个没有工作目录的存储库。我不想要这个。我希望我的存储库是特定于项目的,位于我的台式机和笔记本电脑的给定目录中,并且只跟踪我保存在给定目录树中的内容。这显然是 git 的问题,并且应该“永远”不要推送到正常的存储库中。

有没有办法解决这个问题?

4

3 回答 3

2

您是对的,不建议通过签出推送到存储库;这是因为推送不会更新签出的文件,因此存储库的状态很容易变得混乱。

解决此问题的一种简单方法是在您的桌面上创建两个存储库:一个可以从笔记本电脑推送到一个裸露的存储库,另一个是您想在桌面上编码时使用的工作存储库。另一种方法是让您的笔记本电脑存储库从您的桌面可见,这样您就可以双向拉动。

请注意,即使您正在推送到一个裸存储库,也没有什么能阻止您首先从工作存储库中提取 - 因此您可以随时了解您在桌面上所做的事情。

于 2012-07-04T09:14:19.217 回答
1

在您的桌面存储库中,您需要在 .git/config 中添加:

[core]
   sharedRepository true

[receive]
   denyCurrentBranch false

第一个配置允许您推送到存储库,第二个配置允许您推送远程存储库已签出的分支。

希望这有帮助!

于 2012-07-04T10:07:18.243 回答
1

一种可能性是简单地从桌面上的正常存储库中提取,而不是直接推送到那里的签出分支,而是推送到仅用于在笔记本电脑上接收更新的其他分支,然后单独合并它们。

那是:

laptop$ git clone desktop:path/to/project
laptop$ cd project
[... make changes...]
laptop$ git push -f desktop:path/to/project master:from-laptop

desktop$ cd path/to/project
desktop$ git merge from-laptop

您可以branch.master.push master:from-laptop在笔记本电脑存储库中进行配置,以便git push默认情况下根据该规范推送。

于 2012-07-12T17:48:48.793 回答