将Git项目推送到本地目录

31

不确定Git是否完全支持此功能,如果支持的话将非常有用,因为它可以使事情变得更加容易。基本上,我正在文件夹X中工作的一个项目在到达特定阶段时,我想再次将其推送到我的计算机上的文件夹Y中。

如果这是可能的,那就太好了。更好的是,是否可以在GitHub for Mac或Tower for Mac上实现这一点。


有没有什么理由不使用分支呢?我想你应该创建一个分支,进行编辑,然后在达到“特定阶段”时合并该分支。我猜我有点困惑于在同一台机器上具有有效相同的 repo 的不同文件夹。 - rnicholson
2
分开文件夹的原因是我想要将项目的开发和测试环境分开。另一个文件夹是我的Web服务器运行的位置。 - Aran
2个回答

42

完全可以实现-您可能想要做的是在Y文件夹中创建一个“裸”的git仓库(git init --bare),然后将该文件位置添加为远程:

git remote add Y file:///path/to/Y

我认为GitHub for Mac或Tower for Mac会像处理其他远程仓库一样处理此事。


有一个警告。无论您在哪里创建存储库,git 都需要能够锁定。对于远程挂载点,这并不总是可能的。 - cprn
我不明白file:///path/to/Y指的是什么。你是否只需将file:///path/to/Y替换为您希望成为存储库的目录的完全限定路径?(我尝试用C:\Users\exampleremote\替换它,似乎可以工作)。 - Minh Tran
@cprn 当你说“git需要能够锁定”时,你是什么意思?另外,当你提到“远程挂载点”时,你是指网络上的主机吗?(我有兴趣在LAN网络上设置一个远程存储库,放在一台专用PC主机上)。 - Minh Tran
@MinhTran 我认为绝对的Windows路径也可以使用(手头没有Windows系统来检查)。 - cprn
1
@MinhTran 有些文件系统不允许文件锁定-这就是Git所做的,以确保没有两个Git实例会同时修改相同的存储库,覆盖彼此的更改并可能破坏它。在*nix系统中,将资源附加到树上称为“挂载”。您可以附加本地或远程位置,并使用路径对其进行定位,这包括通过局域网使用的资源,但是您必须确保远程资源使用允许锁定的文件系统(一些仅允许本地锁定,一些允许远程锁定,一些则根本不允许锁定)。 - cprn

-2

我猜你想要将代码推送到 Y,这样你就可以在其他地方拥有一个“之前好的”更改的文件夹。@dahlbyk 的回答建议使用裸仓库。如果你选择这种方式,你可以(而且可能应该)在同一仓库中创建一个分支。

除此之外,只需将 X 中的 git 仓库克隆到 Y(非裸仓库),然后从 Y 进行 git pull 或者像 @dahlbyk 一样从 X 设置一个远程并将其推送到 Y。确保 receive.denyCurrentBranch 被设置为 false,或者在 Y 中检出与你正在推送的分支不同的分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接