Git - 无法推送 - “![远程拒绝] master -> master(工作目录有未暂存的更改)”

2024-02-08

我正在尝试为具有本地版本、临时版本和生产版本的 Wordpress 安装设置一个“简单”git 工作流程。我想做的就是在本地进行更改,然后从本地推送到登台,从本地推送到生产。起初我认为这将是一个简单的任务。我已经能够初始化存储库,添加两个远程“登台”和“生产”,初始化远程上的 git 并通常使用以下命令将更改从本地版本推送到登台和生产服务器:

git add .
git commit -m "some changes"
git push staging master
git push production master

然而,在我工作期间的某个时刻,事情发生了变化,虽然我仍然能够推送到暂存,但现在我无法推送到生产服务器而不收到错误:

! [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 实际上正在损害我的工作流程,而不是帮助它。如果有人对我的错误有任何见解,我将不胜感激!


我遇到了类似的问题,推送到一个非裸远程存储库,我希望立即签出工作副本文件。

我的遥控器配置为receive.denyCurrentBranch updateInstead,但它仍然拒绝在不可预测的时间接受推送。

Git 2.4 添加了一个推送结账 https://blog.github.com/2015-04-30-git-2-4-atomic-pushes-push-to-deploy-and-more/#push-to-deploy-improvementshook,它可以覆盖此类推送失败。

我根据中的示例编写了一个简短的脚本githooks 文档 https://git-scm.com/docs/githooks#_push_to_checkout.

#!/bin/sh
set -ex
git read-tree --reset -u HEAD "$1"

我将此脚本安装在.git/hooks/push-to-checkout在我的远程仓库中。

请注意,此脚本会覆盖远程中的工作副本 - 它不会尝试合并对这些文件的任何更改。

这是因为我希望工作副本仅反映存储库中的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git - 无法推送 - “![远程拒绝] master -> master(工作目录有未暂存的更改)” 的相关文章

随机推荐