【问题标题】:Git & Deployment: Local changes staged, committed, and pushed, not showing on remoteGit 和部署:本地更改暂存、提交和推送,未在远程显示
【发布时间】:2013-02-24 16:45:40
【问题描述】:

我知道这似乎很常见,但我已经用谷歌搜索并搜索过这个,但我看到的大多数回复似乎只是告诉我做我已经做过的事情......

  1. 进行了更改
  2. 暂存文件
  3. 在本地提交更改
  4. 推送到远程源/主机

脚本一直说“一切都是最新的”,但是远程分支中没有任何已提交的更改出现。 (SSH 和查看目录只显示 .git 文件夹,没有推送的更改。)

遥控器是一个设置为裸 (# git config --bool core.bare true) 的空仓库。

master 分支在本地签出。

更新

根据下面的讨论,我认为澄清最初的意图是谨慎的......

遥控器旨在成为一个实时站点,因此不需要一个裸仓库,并且在遥控器上需要一个工作树,但仍然需要促进“推送”更新的能力。

对于这种特殊情况,另请参阅下面我的回答...

【问题讨论】:

  • 你是如何检查它是否为空的?什么命令?哪里是本地,哪里是远程?
  • 更新了答案以回答这个问题并添加其他详细信息。
  • 远程仓库是空的,因为它刚刚被初始化
  • 本地在我的机器上。远程在服务器上。
  • Git 是源代码控制工具,而不是部署工具。除了源代码控制之外,您还需要一种将代码部署到生产环境中的策略。这可能会涉及从 Git 存储库中提取已知版本的代码(可能由标记引用)

标签: git deployment version-control repository


【解决方案1】:

推送到一个 repo 不会改变 repo 的工作树,即使它有一个。但是,裸仓库没有工作树,而且通常您只会推送到裸仓库。

换句话说,推送到另一个存储库将永远更改与该远程关联的任何文件,除了存储所有存储库数据的 .git 目录中的文件。

【讨论】:

  • 对,我知道规范是推送到裸仓库,所以我将 bool 配置值设置为 true(不确定这是否是最好的方法)。
  • 好的,我必须做些什么来改变实际的文件?
  • 嗯,让工作树反映某些提交的一种方法是使用git checkout <commit>
  • 我认为您忽略了这一点,即git push 用于将本地文件移动到另一台机器上。
  • @Marcin:当我读到它时,OP 可能做了类似git init; git config --bool core.bare true 的操作,它会创建一个非裸仓库,然后立即将其切换为裸仓库,这意味着您将拥有一个 .git 目录没有别的了。如果您执行git init --bare,您将获得您所描述的结构,即当您从一开始就创建一个裸露的存储库时。
【解决方案2】:

我阅读了这种行为,发现在“推送”操作期间不更新远程工作树是经过深思熟虑的设计决定:

我通常不使用远程工作树(裸存储库),但如果您使用 Git 进行部署,此功能显然会带来一些麻烦。值得庆幸的是,有一个使用提交挂钩来触发树更新的解决方案。见:

【讨论】:

    【解决方案3】:

    我建议,删除远程 repo 目录,mkdir 新目录,执行 git init --bare,然后重试。然后检查 ssh 到服务器,转到 repo 目录并执行 git log,你应该在那里看到你的更改。

    【讨论】:

    • 我会试试这个。也许我手动设置 core.bare 是不好的做法,而不是在 init 上设置 --bare 选项?
    • 从来没有以你的方式启动裸回购,很难说,我的工作一直很好:)
    【解决方案4】:

    注意:此答案包含在 OP 中的特定案例中。其他答案在一般情况下很有帮助。

    正如@Ryan Stewart 正确指出的那样,推送不会更新工作树(在 OP 的情况下是实时站点的实际内容),但是裸仓库没有工作树。

    而且由于需要一个裸仓库才能推送到,因此 Apache 需要一个独立的工作树才能真正充当实时站点。

    我不确定这是否是最佳做法,但要做到这一点,您基本上可以...

    在服务器上执行此操作(与本地克隆分开):

    1. 使用实时站点的工作目录创建一个 repo
    2. 创建单独的裸仓库
    3. 将裸 repo 设为 live repo 的远程并将 live master 推送到它
    4. 在主存储库和裸存储库之间创建挂钩(脚本)以保持同步

    我对 Git 中的 hooks 概念不熟悉,所以我不会再详细说明,因为害怕进一步的大吃大喝,所以我建议你参考来源:

    http://git-scm.com/book/en/Customizing-Git-Git-Hooks

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2020-12-15
      • 2013-08-31
      • 2013-05-19
      • 2013-09-04
      • 2016-08-10
      • 2013-02-13
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多