【问题标题】:workflow git spy remote工作流 git spy 远程
【发布时间】:2023-10-31 01:39:01
【问题描述】:

假设我有一个裸存储库 A,它有分支 master。我创建本地存储库并将 A 添加为远程。我希望本地存储库永远不会推送到远程,但它可以提交本地并从远程拉取。

bare repository:      o-----o------------o
                      |     |            |
                    pull   pull         pull
                      |     |            |
local repository:     o-----o-------x----o

o: commit of bare repository (some devs make).
x: commit of mine in local and not pushed.

有了 git,我能做到吗?

【问题讨论】:

标签: git git-remote


【解决方案1】:

是的,你可以这样做。它甚至是 git 的基本功能:您更改本地副本,当您想要 push 时,您首先必须从远程 pull 并解决任何冲突(git 可以看到,即更改为相同的行) .

请注意,如果您从未push 对遥控器进行更改,您的版本将越来越不同,并且不兼容性会增加(例如,您创建一个函数,然后创建一个具有相同名称和范围的函数在遥控器上),git 不会检测到它。

【讨论】:

    【解决方案2】:

    您可以使用此处描述的 git hook 机制执行服务器端 ACL:

    http://git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy

    您将脚本添加到远程裸仓库的git hooks 目录中

    .git/hooks/update

    您可以先在本地存储库中测试脚本,然后再将其放到远程裸存储库中。

    【讨论】: