在svn中,提交記錄是無法修改的。比如說,當我們提交了某次修改後,發現該次提交中有錯誤時,只能將將補丁再次提交一遍。這樣,就存在兩次提交記錄,沒***提交的原子性。
在git中,由於提交是在本地進行的,因此如果沒有發布之前,是允許使用reset命令來撤銷提交記錄的,這個命令有如下三種使用方式:
git reset
-soft: 只撤銷commit,保留working tree和index file。
git reset
-mixed: 撤銷commit和index file,保留working tree
git reset
-hard: 撤銷commit、index file和working tree,即撤銷銷毀最近一次的commit
預設是-mixed,不過我沒有看出來mixed和soft有什麼區別,都是把日誌歷史給reset了,內容保持不變。而hard則是把日誌連同內容一起回退了,類似於回滾。
日誌可以reset的好處是:可以隨時commit,這樣就不用擔心後面的修改影響到前面,commit日誌也可以不用填得很規範。每完成乙個迭代後,再把之前的所有commit全部給reset掉,重新寫乙個能正規的注釋,發布到伺服器。
修改已經發布的修改
如果你的提交已經發布,reset後發布時會將伺服器上的提交記錄給同步下來,進行一次merge後再次發布。此時就git的工作方式是和svn一樣的了。此時,如果要修改伺服器段的提交記錄,則可以使用使用了園子裡的一篇文章:git如何永久刪除檔案(包括歷史記錄)中介紹的強制推送的命令:
git push origin master --force
先reset,本地提交後,用該命令強制發布,此時伺服器的提交記錄就會被被本地提交記錄覆蓋。
需要注意的是:修改已經發布的提交是有很大的有風險的,會導致無法回退到歷史版本。這也是svn不允許修改提交記錄的原因。雖然git提供了這個命令,但不到萬不得已的時候不建議使用它。
GIT 修改GIT提交人記錄資訊
場景 公司內部有git賬號,以工號命名,個人賬號參與開源專案 提交開源專案的時候使用者名稱沒切換成個人賬戶,導致專案都是工號的提交記錄,違反了公司規定。參考 侵刪。git clone bare如 cd ant design.gitcopy以下指令碼到記事本,修改old name correct na...
Git修改提交記錄的順序 刪除某次提交記錄
網上搜尋了很多方法,不一而足,本博文提到的方法,是我認為最容易理解的 每一次提交記錄,都能生成對應的補丁 patch 先生成各個提交記錄的補丁,然後硬回退版本 reset hard 然後按照期望的提交順序,順次打補丁 am 關於補丁之間的衝突,沒有考慮 因為調整的是某個分支上的提交記錄,理論上不會有...
idea中修改git提交名字
1.開啟電腦c盤裡的 gitconfig檔案,檢視使用者名稱跟郵箱是否相符 2.如果不相符,開啟git windows客戶端,命令修改使用者名稱和郵箱位址。修改當前專案使用者名稱和密碼 git config user.name username git config user.email email...