【问题标题】:git repository in local machine to access from laptop本地计算机中的 git 存储库以从笔记本电脑访问
【发布时间】:2012-07-04 18:13:36
【问题描述】:
我希望通过以下设置与 git 一起使用:对于给定的项目,我希望将我的“原始”存储库放在我工作的台式计算机的目录中 ($desktop)。然后我希望能够从家里或其他任何地方($laptop)访问、拉取和推送这个存储库。
对于我在其他 questions 中看到的内容,该过程通常涉及使用在我的桌面上创建一个裸 git 存储库
$desktop > git init -bare
但是我的理解是,这会产生一个没有工作目录的存储库。我不想要这个。我希望我的存储库是特定于项目的,位于我的台式机和笔记本电脑的给定目录中,并且只跟踪我保存在给定目录树中的内容。这显然是 git 的问题,应该“永远”不要推送到正常的存储库中。
有没有办法解决这个问题?
【问题讨论】:
标签:
git
version-control
repository
push
pull
【解决方案1】:
您说得对,不建议通过签出推送到存储库;这是因为推送不会更新签出的文件,因此存储库的状态很容易变得混乱。
解决此问题的一种简单方法是在您的桌面上创建两个存储库:一个是您可以从笔记本电脑推送到的裸存储库,另一个是您想要在桌面上编码时使用的工作存储库。另一种方法是让您的笔记本电脑存储库在您的桌面上可见,这样您就可以双向拉动。
请注意,即使您要推送到裸存储库,也没有什么能阻止您先从工作存储库中提取 - 因此您可以随时了解您在桌面上所做的事情。
【解决方案2】:
一种可能性是简单地从桌面上的正常存储库中提取,而不是直接推送到那里的签出分支,而是推送到仅用于在笔记本电脑上接收更新的其他分支,然后单独合并它们.
即:
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 默认根据该规范推送。
【解决方案3】:
在您的桌面存储库中,您需要在 .git/config 中添加:
[core]
sharedRepository true
[receive]
denyCurrentBranch false
第一个配置允许您推送到存储库,第二个配置允许您推送远程存储库已签出的分支。
希望有帮助!