所以,我剛剛開始使用 Git,多年來一直是一個快樂的(可能相當膚淺的)TortoiseHG 用戶。
自從上次在代碼中使用某個特定內容以來,我已經連續進行了 10 次提交,其中大約一半的提交都在我引入該問題的嫌疑人名單上。挑戰在于,最后兩次提交解決了一個不同的問題,該問題阻止了我的測驗作業,因此他們必須保持活動狀態,否則我什至無法運行測驗,事情會變得復雜。
我想“禁用”我本地存盤庫中的嫌疑人,即將我的作業目錄更新為沒有進行這 5 次提交時的狀態,并運行一些測驗,然后單獨啟用/禁用它們,以查看內容出錯。
我知道我可以還原單個提交,但這會變得乏味并添加額外的更改,然后需要隨著搜索的進行提交/還原。如果未應用某些提交子集,則似乎沒有生成包含狀態的作業目錄的函式。
但似乎應該有一種方法來創建一個本地分支(我可以在完成后洗掉它,并且永遠不會推送到服務器),它只包含我認為安全的提交,然后我可以將可疑的提交一一添加,以查看何時出現問題。
那是對的嗎?如果是,我將如何做到這一點?如果沒有,還有其他方法嗎?
我目前正在 Linux 上為 git 測驗各種 GUI 客戶端——因此,可以通過這些客戶端之一的 GUI 應用解決方案的加分點,并且不需要花哨的特定命令列引數。
uj5u.com熱心網友回復:
我建議使用互動式 rebase,這將允許您重新排序甚至洗掉有問題的提交。
命令:git rebase -i <last known good commit>
檔案:https : //git-scm.com/docs/git-rebase
其他選項可能是創建您需要使測驗作業的最后兩個提交的補丁/存盤,然后像往常一樣使用 git bisect,而不是直接運行測驗,您可以這樣做:
git stash pop
run test
git stash
git bisect <test result>
祝你好運!
uj5u.com熱心網友回復:
我假設“TortoiseHG”中的“HG”意味著 Mercurial,這可能解釋了這里心理模型的差距:與 Mercurial 不同,git 中的提交并不代表更改。相反,它代表整個存盤庫在特定時間的快照。git 不是從一系列更改中構建狀態,而是通過比較狀態來構建更改。
鑒于此,“禁用提交”的概念在 git 中沒有意義——只有一個提交對作業副本有貢獻,而這就是您當前已檢出的那個。
按順序瀏覽提交并測驗它們非常容易——您可以通過提交哈希檢查任何提交,并且您的作業副本將反映提交的狀態。您還可以使用git bisect通過一長串提交執行二進制搜索,而不是按順序測驗每個提交。
如果要測驗更改組合,則需要使用這些組合創建臨時分支,然后將它們丟棄。例如:
- 創建臨時分支
- 用于
git reset --hard some_revision_hash將其指向(并簽出)特定修訂版 - 使用git cherry-pick重新創建您對一個或多個后續提交所做的更改
- 測驗
- 轉到第 3 步添加更多更改,或轉到第 2 步從不同的基點開始
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/317333.html
標籤:混帐
上一篇:當兩個表單都處于活動狀態時,如何在VB.NET中更新另一個表單中的標簽文本(訊息傳遞)[VisualStudio2010]。
