在www.hostingcompany.com/~/mysite.com上维护源代码的好Git策略是什么?

在www.hostingcompany.com/~/mysite.com上维护源代码的好Git策略是什么?,git,Git,这与 假设托管公司是www.hostingcompany.com 当我ssh到它时,我在~中,我会看到 ~/mysite.com ~/any_other_folders 在~/mysite.com中对所有源代码进行版本控制,并能够将Git克隆到我的本地PC上,什么是好的Git工作流?这样我就可以在本地进行修改,然后发布一行代码并推送到回购协议,让~/mysite.com上的所有代码都是最新的 使用git回购,然后从本地PC到mysite.com

这与

假设托管公司是
www.hostingcompany.com

当我ssh到它时,我在
~
中,我会看到

~/mysite.com
~/any_other_folders
~/mysite.com
中对所有源代码进行版本控制,并能够将
Git克隆到我的本地PC上,什么是好的Git工作流?这样我就可以在本地进行修改,然后发布一行代码并推送到回购协议,让
~/mysite.com
上的所有代码都是最新的


使用git回购,然后从本地PC到mysite.com
是一种好方法吗?我不喜欢这样做,因为很难看到所有内容是否同步。

直接从您已经得到答案的地方复制答案:

您有两个选择:

  • 创建一个裸存储库(
    mysite.com.git
    )和一个非裸存储库(
    mysite.com
    )。在裸存储库中,添加一个
    post update
    hook到
    git--git dir=…/mysite.com pull

    请注意,您可能希望通过使用
    -s
    标志从裸存储库克隆来创建非裸存储库,或者在之后设置
    .git/objects/info/alternates
    ,以避免复制所有数据

  • 只创建一个存储库,然后:

  • 分离头:
    git签出主机@{0}

  • post-update
    hook添加到
    git-merge-master

  • 这里的原因是git拒绝修改签出的分支,但是如果您取消选中该分支,您将能够推送。您将能够从一个钩子更新工作目录(钩子是一个放置在存储库的
    hooks
    目录中的脚本)。您可以创建一个单独的分支并签出该分支,也可以使用“分离的头部”状态(如上所述),git通过一个指向该分支的特殊引用“头部”来记住签出哪个分支,但是如果您签出了某个不是分支的分支,它会直接指向修订,这称为“分离的分支”并且由于没有签出分支,因此允许您推送到任何分支)

  • 只创建一个存储库,然后:

  • 关闭“推送到签出分支检查”

  • 添加一个
    post update
    钩子到
    git reset--hard
    以在按下时重新签出分支

  • 此选项仅对只读访问有效,因为每次推送时钩子将放弃任何本地更改

    如果只是签出并以只读方式访问,则第二个选项的效率略高,但如果在工作目录上运行其他一些命令,则第一个选项更安全(您可以擦除并重新创建工作副本,而无需担心主repo)。另请参阅


    编辑:添加了第三个选项。

    目录或文件的可能副本是
    mysite.com.git
    吗?我们是否使用
    mkdir mysite.com.git
    cd mysite.com.git
    git init--bare
    cd../mysite.com
    ,然后
    git init-m“ok”
    git push../mysite.com.git master
    ?在我看来,第一个选项是最好的@動靜能量:
    mysite.com.git
    是一个裸存储库,因此是一个目录。是的,您可以按照自己的说法创建它。通常使用
    .git
    后缀命名裸存储库。