簡體   English   中英

強制 git stash 覆蓋添加的文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM