【问题标题】:Mark Git repository as local only so it can not be pushed?仅将 Git 存储库标记为本地,以便无法推送?
【发布时间】:2016-04-18 17:24:43
【问题描述】:

我有一个我不想推送到 GitHub 的特定项目。也就是说,我只想在本地使用 Git,并确保它永远不会被推送到远程存储库。有没有办法标记一个目录/项目,使其锁定,如果尝试 push 命令会失败?这样我就不用担心不小心推到它了。我使用 Git 这么久了,add/commit/push 根深蒂固,我不想在深夜的编程会话中发生意外

【问题讨论】:

  • 是针对特定文件夹/文件还是整个项目?
  • 如果存储库配置不包含任何远程存储库的定义,那么git push 不会做任何事情,因为它没有任何地方可以实际推送到...跨度>
  • 或者您可以跟踪本地远程,这样当您意外推送时(我认为您会这样做),它只会被推送到您本地机器中的某个文件夹。
  • @RobertOschler 请看看我的回答。
  • 由于 add/commit/push 根植于 OP 的手指,他肯定会做一两次推送,当他这样做时,我想他只是想说“哦,好吧,它赢了无论如何都不要公开”并继续前进。但是,如果没有配置远程,git 将显示一条错误消息以及如何添加远程,这可能会分散 OP 的注意力。我只是认为他想推,但不想公开回购。

标签: git github push


【解决方案1】:

两个选择(据我所知):

1) 移除本地仓库对远程仓库的引用。

git remote remove origin

通常,只有一个名为“origin”的远程引用。 您可以检查其他参考资料:

git remote show

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

git remote set-url origin ${somethingElse}

【讨论】:

    【解决方案2】:

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

    #!/bin/sh
    
    echo 'Repository cannot be pushed' 2>&1
    exit 1
    

    echo 是可选的,但脚本应该退出非 0。

    【讨论】:

      【解决方案3】:

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

      1) 使用以下命令在您的机器中某处创建一个裸存储库:

      git init --bare path/to/localrem.git
      

      这将创建一个没有工作目录的裸存储库,这是实际遥控器中通常使用的。 (它会创建一个名为 localrem.git 的文件夹,这是通常的 .git 存储库,但这是用于远程的,显然您可以将 localrem 更改为您喜欢的任何名称)

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

      git remote add origin path/to/localrem.git
      

      3) 现在您可以随心所欲地推动,而不必担心世界会看到您的工作。

      git push origin master
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-02
        • 2011-03-14
        • 1970-01-01
        • 2012-01-12
        • 2016-06-27
        • 2014-03-15
        • 1970-01-01
        相关资源
        最近更新 更多