[英]Force git stash to overwrite added files
我有一些未在 git 中跟蹤的文件。 我做了一些更改並想提交它們,但意識到我忘記先簽入未修改的文件。 所以我隱藏了文件,然后添加了未修改的版本。
然后,當我將 stash 應用到存儲庫時,由於已經添加了文件,我會遇到沖突。
如何應用存儲,並強制優先使用存儲中的版本而不是存儲庫中的原始版本?
謝謝
使用git checkout
而不是git stash apply
:
$ git checkout stash -- .
$ git commit
這會將當前目錄中的所有文件恢復到它們的隱藏版本。
如果應該保留工作目錄中的其他文件的更改,這里有一個不太笨重的替代方案:
$ git merge --squash --strategy-option=theirs stash
如果索引有變化,或者合並會觸及有本地變化的文件,git會拒絕合並。 可以使用從存儲中檢出單個文件
$ git checkout stash -- <paths...>
或與
$ git checkout -p stash
git stash show -p | git apply
然后git stash drop
如果你想刪除隱藏的項目。
要強制git stash pop
運行此命令
git stash show -p | git apply && git stash drop
特爾;博士:
git checkout HEAD path/to/file
git stash apply
長版:
由於要覆蓋的未提交更改,您會收到此錯誤。 使用git checkout HEAD
撤消這些更改。 您可以使用git checkout HEAD path/to/file
撤消對特定文件的更改。 排除沖突原因后,您可以照常申請。
保留本地源備份,然后應用強制重置以與 GIT 存儲庫保持一致。 然后更改您的本地代碼並提交。
git reset --hard FETCH_HEAD
我刪除並重新克隆了我的工作空間以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.