繁体   English   中英

在我的反应应用程序上运行“npm run deploy”后提交对 git 的更改时出现问题

[英]Problems when it comes to committing changes to git after running 'npm run deploy' on my react app

所以我已经成功地在 GitHub 页面上部署了我的 react 项目,有很多关于如何做到这一点的有用指南。 但是,在更新项目时我遇到了问题(很难找到好的指南)

因此,假设我在代码上对我的项目进行了更改,因为它存在于我计算机上的文件夹中。

然后我将运行“npm run deploy”。 完成此操作后,我可以看到我的更改已在我的在线部署站点上成功实施,一切都很好。

然后我运行以下代码将更改推送到存储库中:

git add .

git commit -m "update"

这工作正常,但我在下一步得到一个错误:

git push -u origin master

当我这样做时,我总是在终端中收到相同的错误消息:

error: failed to push some refs to 'https://github.com/redacted/redacted.github.io.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

谁能解释一下这里发生了什么,以及这个错误消息的含义。

在错误消息中,“远程”是指 GitHub 存储库中存在的代码,“本地”是指我计算机上的代码吗? 为什么运行“npm run deploy”后远程代码和本地代码会出现分歧? 将来,对我来说更新存储库的最佳方法是什么,以免我一直遇到这个问题。

如果它很重要,这是我在 package.json 文件上的脚本:

"predeploy": "npm run build",
"deploy": "gh-pages -b master -d build",

提示:更新被拒绝,因为远程包含您在本地没有的工作 [...]。

远程上有您在本地没有的提交。 要查看它们,您可以使用git diff 首先,在你的仓库中更新远程引用的本地表示:

git fetch

现在您有了origin/master上内容的最新本地表示,您可以通过以下方式看到差异:

git diff origin/master

Git diff 是 git 工具最重要的部分之一,因此请熟悉其语法。 这应该向您显示您错过了哪些更改。 您还可以调出origin/master的日志,其中将显示提交消息、作者和日期:

git log origin/master

如果它在您不认识的编辑器中加载并且屏幕左下角是:冒号字符,请键入q退出。 这个程序叫做less

所有这些都可以帮助您反省尚未在本地合并的远程更改。 当您准备好将它们拉入您自己的分支时,只需发出:

git pull

这会将缺失的提交应用到您的本地分支。 如果本地提交更改与远程提交相同的行,您将最终遇到 git 冲突。 在这种情况下,您必须查看冲突并决定如何组合这两个更改。 通常,可以合并远程更改而不会引起任何冲突,但这当然取决于双方都进行了哪些更改。

最后一点。 您绝对不想做的是git push -f 这将强制将您的更改推送到 master,替换其当前历史记录 - 换句话说,您将破坏远程更改。 永远不要这样做。 它有时间和地点,一旦您对git diff及其作为分布式变更控制系统的行为更加熟悉,您可以重新审视该建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM