簡體   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