【发布时间】:2018-07-02 22:40:28
【问题描述】:
我正在尝试为具有本地版本、暂存版本和生产版本的 Wordpress 安装设置“简单”的 git 工作流程。我想做的就是在本地进行更改,然后从本地推送到暂存,从本地推送到生产。起初我认为这将是一个简单的任务。我已经能够初始化存储库,添加两个遥控器“staging”和“production”,在遥控器上初始化 git,并通常使用以下命令将更改从我的本地版本推送到暂存和生产服务器:
git add .
git commit -m "some changes"
git push staging master
git push production master
但是,在我工作期间的某个时间点发生了一些变化,虽然我仍然能够推送到 Staging,但现在我无法推送到生产服务器而不收到错误:
! [remote rejected] master -> master (Working directory has unstaged changes)
当我执行“git status”时,它会说:
On branch master
nothing to commit, working tree clean
在阅读了 Stack Overflow 上几个相似但不同问题的答案后,我尝试了以下方法:
git pull staging master
git pull staging master --rebase
git pull production master
git pull production master --rebase
我也尝试在远程服务器上执行此命令
git config --local receive.denyCurrentBranch updateInstead
我已经完全重新创建了几次服务器和存储库,只是为了完全从头开始重新安装 git,但是这个问题在一段时间后一直在发生,此时 Git 实际上正在损害我的工作流程而不是帮助它。如果有人对我的错误有任何见解,将不胜感激!
【问题讨论】:
-
您的生产仓库是否设置为裸仓库?
-
您好,感谢您的建议。我尝试删除远程存储库并使用
git init --bare重新初始化它们,这在每个存储库中创建了裸存储库。但是,现在当我尝试执行git push staging master时,它说它完成了推送,但是更改后的文件实际上并没有进入我要推送到的文件夹中:-C -
:(。请问您为什么要这样做?您可以只使用普通的旧 github 并将您的(Windows?)机器设置为 VSTS 构建客户端。任何时候您推送到在您的 github 上,VSTS 将自动在云端或生产/登台机器上“构建”您的代码。构建的最后一步是发布工件,如果您的生产/登台机器是构建代理,甚至不需要 FTP 或任何东西。
-
更改后的文件实际上并没有进入我要推送到的文件夹中——当然他们没有。裸仓库是一个没有文件的仓库(没有工作树),它只包含 git 数据库。要从裸仓库签出文件,您需要从它克隆到非裸仓库。每次推送到裸仓库时再次从中提取。
标签: wordpress git git-push git-remote git-add