我想將所有提交合併爲一個用於刪除歷史記錄。我知道它可能在Git命令行中,但我還沒有在libgit2中找到一種方法。使用libgit2將所有提交合併爲一個提交的方法
我在最新版本中使用libgit2,由我在C++中編譯。
你有什麼建議?
我想將所有提交合併爲一個用於刪除歷史記錄。我知道它可能在Git命令行中,但我還沒有在libgit2中找到一種方法。使用libgit2將所有提交合併爲一個提交的方法
我在最新版本中使用libgit2,由我在C++中編譯。
你有什麼建議?
有幾種方法可以考慮這一點。在命令行中,你可以做這樣的事情:
git reset --soft <some-ancestor-commit-ish>
git commit -m "This commit combines some history."
軟復位移動當前分支指向一些祖先的承諾,而改變工作目錄和索引。所以,現在你已經完成了這些提交所引入的所有更改,並且可以將它們作爲新的組合提交提交。這兩個步驟可以直接翻譯爲libgit2類似:
git_reset(repo, ancestor_commit, GIT_RESET_SOFT, NULL);
git_commit_create(...);
我會測試它,但我不確定這一點,因爲我想刪除歷史記錄。你知道rebase命令行與壁球?我想在libgit2上這樣做,因爲它壓縮提交併刪除它們以創建一個新文件。 –
Rebase不刪除歷史記錄。它會寫入新的歷史記錄,並使舊的提交無法訪問。我描述的過程基本上是一回事。無法訪問的提交只會在他們變老並且運行諸如'git gc'之類的東西之後纔會被修剪。據我所知,libgit2甚至沒有辦法從數據庫中刪除不可訪問的對象。 –
謝謝你,夥計們,我測試過了,它工作的很好! –
@nulltoken你能幫助我嗎? –