git推送文件不';无法远程更新

git推送文件不';无法远程更新,git,Git,一个非常常见的场景: 我们有一个空的存储库。 如果开发人员将git-push从本地机器推送到barerepo,然后另一个开发人员将git-pull他们将更新应用程序的本地版本(包括文件) 然而,有时,当在远程工作树上直接(由我们的主机或其他任何人)进行更改时,我们最终会在本地机器上拥有不同的文件版本,远程工作树get总是过时 据此: 推送操作始终是关于传播存储库历史的 和更新参照,并且从不接触工作树文件。在里面 特别是,如果推送更新在中签出的分支 远程存储库不会更新工作树中的文件 我不确定在远

一个非常常见的场景:

我们有一个空的存储库。 如果开发人员将
git-push
从本地机器推送到
bare
repo,然后另一个开发人员将
git-pull
他们将更新应用程序的本地版本(包括文件)

然而,有时,当在
远程工作树
上直接(由我们的主机或其他任何人)进行更改时,我们最终会在本地机器上拥有不同的文件版本,
远程工作树
get总是过时

据此:

推送操作始终是关于传播存储库历史的 和更新参照,并且从不接触工作树文件。在里面 特别是,如果推送更新在中签出的分支 远程存储库不会更新工作树中的文件

我不确定在远程存储库中签出是什么意思。我没有进行任何
git签出,无论是什么
,都可以使用ssh远程切换分支(如果这就是它的意思的话)

无论如何,如果我们使用git push,就不会触及任何工作树文件。嗯

为了解决这个问题:

如果您确定自己正在做什么,那么可以对其执行“git重置-硬”操作 你推到的那一边。请注意,这将丢失您所做的所有更改 在这一侧,将工作树重置为您需要的最新版本 推

“git重置--硬”

我这样做了,但没有任何改变。它说:

HEAD is now at 45d948a Merge branch 'dev' of /home/blabla/private/repos/blabla_hub into dev
但一切都没有改变

1) 如果所有开发人员只是通过一个裸露的(没有工作树的)存储库推拉,那么他们如何更新工作树?(文件从哪里经过?)

2) 为什么我没有按预期更新
远程工作树

我的问题清楚吗?请给我一些建议

更新

我正在使用开发和主分支。本地和远程,除此之外,我使用以下模式:

该系统的关键思想是网站存在于服务器上 作为一对存储库;一个与传统存储库并行的裸存储库 包含实时站点的存储库。两个简单的Git钩子链接 配对,自动在它们之间推拉更改

这两个存储库:

Hub is a bare repository. All other repositories will be cloned from this.
Prime is a standard repository, the live web site is served from its working directory.
使用这对存储库既简单又灵活。远程克隆 通过ssh访问,您可以通过简单的git推送更新live站点 中心直接在服务器上编辑的任何文件都会立即镜像 一经提交就进入中心


参考

据我所知,您至少有三份回购协议:
本地
集线器
,以及
www/dev
。您使用
local
repo进行工作(进行更改、提交并推送到
hub
)。有时
www
工作树会被web服务器修改。如果希望将这些更改保持在版本控制之下,可以将它们提交到
www/dev
repo,甚至可以将提交从
www/dev
推送到
hub
。(您可以使用cron作业来自动执行此操作。我建议使用
git status
的输出来确定是否要进行提交。)


您最初的问题听起来像是
www/dev
repo的工作副本与
www/dev
repo本身不同步。在聊天中进一步讨论后,似乎
www/dev
repo并不总是与
hub
repo同步。必要时,您只需确保在
www/dev
repo中运行
git pull
(可能使用钩子或其他脚本)。

通过裸存储库,这意味着您不打算直接在该存储库上执行
git签出。而repo只是用作远程同步其他repo。因此,我不确定你如何能够在没有git签出的情况下直接更改远程回购协议(这将违反回购协议的赤裸裸)。你所说的“远程工作树”是什么意思?请提供有关如何建立回购协议的详细信息。当然可以随意使用笔名。@Tuxdude-不确定这是否回答了你的问题,但是:我在某个托管公司托管了该网站。那个托管公司远程更改了一个.htaccess文件(在我的项目工作树上,没有使用git进行更改)。@Code Guru-我已经更新了我的问题,也许它可以回答你的问题。你如何与远程存储库交谈?