[英]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.