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-我已经更新了我的问题,也许它可以回答你的问题。你如何与远程存储库交谈?