从笔记本电脑访问本地计算机中的git存储库

从笔记本电脑访问本地计算机中的git存储库,git,version-control,repository,push,pull,Git,Version Control,Repository,Push,Pull,我希望有以下设置来使用git:对于给定的项目,我希望我的“源”存储库位于我工作的桌面计算机($desktop)的目录中。然后,我希望能够从家里或其他任何地方(笔记本电脑)访问、拉和推这个存储库 正如我在其他方面所看到的,这个过程通常涉及到在我的桌面上使用 $desktop > git init -bare 然而,我的理解是,这将产生一个没有工作目录的存储库。我不要这个。我希望我的存储库是特定于项目的,位于我的台式机和笔记本电脑的给定目录中,并且只跟踪我保存在给定目录树中的内容。这对于gi

我希望有以下设置来使用git:对于给定的项目,我希望我的“源”存储库位于我工作的桌面计算机($desktop)的目录中。然后,我希望能够从家里或其他任何地方(笔记本电脑)访问、拉和推这个存储库

正如我在其他方面所看到的,这个过程通常涉及到在我的桌面上使用

$desktop > git init -bare
然而,我的理解是,这将产生一个没有工作目录的存储库。我不要这个。我希望我的存储库是特定于项目的,位于我的台式机和笔记本电脑的给定目录中,并且只跟踪我保存在给定目录树中的内容。这对于git来说显然是有问题的,人们不应该“永远”把它推到一个普通的存储库中


有什么方法可以解决这个问题吗?

你是对的,不建议将其推送到带有签出的存储库;这是因为推送不会更新签出的文件,所以存储库的状态很容易变得混乱

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


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

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

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


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

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

[core]
   sharedRepository true

[receive]
   denyCurrentBranch false
第一个配置允许您推送到存储库,第二个配置允许您推送到签出远程存储库的分支


希望这有帮助

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

[core]
   sharedRepository true

[receive]
   denyCurrentBranch false
第一个配置允许您推送到存储库,第二个配置允许您推送到签出远程存储库的分支


希望这有帮助

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

即:

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
将根据该规范进行推送。

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

即:

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
将根据该规范进行推送