将Git存储库标记为“仅本地”,以便它不能被推送?

将Git存储库标记为“仅本地”,以便它不能被推送?,git,github,push,Git,Github,Push,我有一个特别的项目,我永远不想推到GitHub。也就是说,我只想在本地使用Git,并确保它永远不会被推送到远程存储库。是否有一种方法可以标记目录/项目,使其被锁定,并且如果尝试,push命令将失败?这样我就不用担心不小心推了它。我已经使用Git很长时间了,添加/提交/推送都是我的工作,我不想在深夜编程时发生意外。您可以添加一个预推钩子来防止推送存储库。将现有的.git/hooks/pre-push.sample重命名为.git/hooks/pre-push(如果该文件不存在,则创建该文件)。文件

我有一个特别的项目,我永远不想推到GitHub。也就是说,我只想在本地使用Git,并确保它永远不会被推送到远程存储库。是否有一种方法可以标记目录/项目,使其被锁定,并且如果尝试,push命令将失败?这样我就不用担心不小心推了它。我已经使用Git很长时间了,添加/提交/推送都是我的工作,我不想在深夜编程时发生意外。

您可以添加一个
预推
钩子来防止推送存储库。将现有的
.git/hooks/pre-push.sample
重命名为
.git/hooks/pre-push
(如果该文件不存在,则创建该文件)。文件的内容应如下所示:

#!/bin/sh

echo 'Repository cannot be pushed' 2>&1
exit 1
回声是可选的,但是脚本应该退出非0。

有两个选择(据我所知):

1) 删除本地存储库对远程存储库的引用

git remote remove origin
通常,只有一个远程引用名为“origin”。 您可以检查其他引用:

git remote show
2) 保留引用,但将它们指向不同的存储库:

git remote set-url origin ${somethingElse}

您可以按如下方式添加本地远程服务器:

1) 使用以下方法在计算机中的某个位置创建一个裸存储库:

git init --bare path/to/localrem.git
这将创建一个没有工作目录的裸存储库,这通常用于实际的远程。(它将创建一个名为
localrem.git
的文件夹,这是通常的.git repo,但这是用于远程的,显然,您可以更改
localrem
的任何名称)

2) 接下来,在原始存储库中添加新的远程设备,就像添加任何普通远程设备一样,除了路径不是url之外:

git remote add origin path/to/localrem.git
3) 现在你可以随心所欲地推动,而不必担心全世界看到你的作品

git push origin master

当然,这取决于您希望在本地远程存储库中保留哪个分支。

是针对特定文件夹/文件还是整个项目?如果存储库配置不包含远程存储库的任何定义,那么,
git push
将不起任何作用,因为它没有任何地方可以实际推送到……或者你可以跟踪本地远程设备,这样当你不小心推送时(我想你会这样做),它只会被推送到本地计算机中的某个文件夹中。@RobertOschler请看一下我的答案。由于add/commit/push源于OP的手指,他肯定会推一两下,当他这么做的时候,我想他只是想说“哦,好吧,反正不会公开”然后继续。但是,如果没有配置远程设备,git将显示一条错误消息,以及如何添加远程设备,这可能会分散OP的注意力。我认为他只是想推送,而不是公开回购。