git 刪除 提交錯誤的 commit, 本地與遠端
##前景
在使用 git 工作時, 難免會出現 commit 了一些不想提交的內容, 或者 commit 的時候 commit 的日誌不太滿意想要進行修改。分兩種情況一種是針對 commit 之後沒有進行 push. 另一種則是 commit 之後 push 到了 remote, 下面分別講一下分別對應的修改方式.
##修改本地 commit.
- 如果單純只是想修改 commit 的提交備註資訊的話, 只需輸入$ git commit! 即可直接修改上次 commit 日誌.
- 單純修改commit 提交備註資訊 對應命令$ git commit!
- 想修改 commit 內容則需要回滾版本, git log 直接檢視上一個版本 HEAD, 輸入命令$ git reset HADE 回到上一個版本, 然後在重新提交自己想要提交的即可. 同時 commit 日誌也可以重新寫.
- 修改commit 提交內容 對應命令$ git reset HADE
##修改遠端 commit. 即 commit 後已 push 到遠端
分別兩種解決方法.
- 方法一
刪除掉上一個 commit 並且保留內容, 但是不需要 commit 日誌, 或者單單修改日誌等。
命令列:
git reset HADE
git push origin developer --forcedeveloper 指的是遠端分支名.根據你自己分支來輸入。
相當於回到上一個版本, 之後 push 將之前修改的內容全部也 push 上來,--force 表示強制將本地 push 到遠端, 使用 --force 需要謹慎確保無誤之後在新增哦.
- 方法二
先撤銷上一次的錯誤的 commit, 然後在重新生成一個新的提交. 可以理解成覆蓋的效果。
-
$ git revertHADE
-
$ git add
-
$ git commit
-
$ git push
reset與 revert 區別
引用ofollow,noindex">git revert 用法
-
git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
-
在回滾這一操作上看,效果差不多。但是在日後繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日後合併老的branch時,導致這部分改變不會再次出現,但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。
-
git reset 是把HEAD向後移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。
##最後