我知道这看起来很常见,但我已经用Google搜索并搜索了这个,但我见过的大多数回复似乎只是告诉我做我已经做过的事情......
成绩单一直说“一切都是最新的”,但没有任何提交的更改出现在远程分支中。 (SSH和查看目录只显示.git文件夹,而不显示任何推送的更改。)
遥控器是一个空的回购设置为裸(# git config --bool core.bare true
)。
主分支在本地检出。
根据下面的讨论,我认为澄清原始意图是明智的......
遥控器应该是一个实时站点,因此不需要裸露的回购,并且遥控器上需要一个工作树,但仍然需要“推动”更新的能力仍然是可取的。
另请参阅下面我对此特定案例的回答......
答案 0 :(得分:4)
推送回购并不会改变该回购工作树,即使它有一个。但是,一个裸的仓库没有工作树,通常你只会推送到裸仓。
换句话说,推送到另一个仓库将从不更改与该远程相关的任何文件,除了.git目录中存储所有仓库数据的文件。
答案 1 :(得分:2)
我读到了这种行为并发现这是一个故意的设计决定,不在“推”操作期间更新远程工作树:
我通常不使用远程工作树(裸存储库)但是如果你使用Git进行部署,这个功能显然会造成一些痛苦。值得庆幸的是,有一个解决方案使用提交挂钩来触发树更新。参见:
答案 2 :(得分:1)
我sugest,删除了远程repo dir,mkdir新的,执行git init --bare,然后再试一次。然后检查ssh到服务器,转到repo目录并执行git log,你应该在那里看到你的更改。
答案 3 :(得分:0)
注意:此答案包含在OP中的特定案例中。其他答案在一般情况下很有用。
正如@Ryan Stewart正确地指出的那样,推送不会更新工作树(在OP的情况下实际站点的实际内容),但是一个裸的回购没有工作树。
由于需要一个简单的回购才能推送到,所以Apache需要一个独立的工作树才能真正作为实时站点提供服务。
我不确定这是否是最佳做法,但为了做到这一点,你基本上可以......
我对Git中钩子的概念不熟悉,所以我不会进一步详细说明,因为害怕进一步嬉戏,所以我推荐你来源: