我有 2 個提交,我們稱它們為 A 和 B,B 是一個很好的提交,但是 A 有一些檔案需要洗掉,而且我對 git 有點陌生,所以我真的不知道在這種情況下該怎么做。
順便說一句,使用bitbucket。
uj5u.com熱心網友回復:
更合適的解決方案可能是git rebase. 其中提交 B 保持不變,提交 A 被編輯。
例如。
git rebase -i HEAD~2
將從 HEAD 重新設定 2 個提交。其中 HEAD 是當前提交
git 接下來會提示你描述你想對每次提交做什么。在串列中找到 commit A 并用editthen quit & save替換第一個單詞(很可能你在 vim 中)。這將使您的 git 處于可以繼續進行編輯的狀態,例如git rm -f --cached somefile.txt.
完成編輯后,只需運行即可git rebase --continue。使用 git rebase 編輯的提交 A
uj5u.com熱心網友回復:
這里有 2 種更新提交的機制(它們實際上都沒有更新提交——它們是不可變的):
- 您基于另一個提交創建一個新提交(通過修改、變基、重置、過濾分支的多種方式來完成)。您的下一次提交也必須開始參考新的提交,因此也必須復制這些提交。所有提交都將獲得新的哈希值。如果沒有人參考舊的提交,那么在某些時候它們將被 GC 處理。
- git用另一個替換提交。這會保留舊的和新的提交。只是每當 Git 看到對舊參考的參考時,它就會假裝參考另一個參考。
第一個選項是從 git 存盤庫中洗掉提交及其資料的真正方法。但它是侵入性的,需要強力推動。第二個選項是輕量級的,不需要重新創建提交的歷史記錄。但它并沒有真正洗掉它們指向的錯誤提交和資料——仍然有可能找到它們,只是變得更難了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/380935.html
上一篇:在gitlab上推送檔案
下一篇:View元素上的事件偵聽器
