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