1. 程式人生 > >git操作之發現push到遠程倉庫的代碼有誤

git操作之發現push到遠程倉庫的代碼有誤

修正 繼續 上進 效果 .com log img 自己 行修改

有時候,我們可能發現把本地代碼push到中央倉庫的某一個commit不對,處理方法具體分以下兩個部分進行討論

1. 出錯的代碼,只在遠程倉庫你自己的branch上面,沒有合並到mater情況

如果只是出錯在你的branch上面,那麽只需要在本地把自己寫錯的commit修改或者刪除,然後在push到你的遠程分支就可以,但是這樣會導致的一個問題是:
技術分享圖片
由於你在本地對已經存在的commit進行了修改,就會導致,遠程倉庫的倉庫,包含了本地沒有的commit,會push失敗。但是這個分支又是你自己的代碼,沒有你同事的代碼,那麽你就不用pull一下遠程的分支了,而是選擇強制push:

git push origin master -f

-f 是 -force縮寫,
技術分享圖片

這樣就把本地修改了遠程分支的代碼。

2. 出錯的代碼已經合並到了master上

如果是這種情況,上述方法就不能實施了,因為你不知道你的同事是否已經往master裏面提交了新的代碼,上述操作就會覆蓋掉同事的push。在這種情況下:
我們只能退一步,增加一個新的提交,把之前提交出錯的代碼進行修改。然後在提交到遠程倉庫。

額外拓展知識git revert 操作:如果你上一次的commit只是把原有的代碼給刪除了,你這一次希望保留原有的代碼,在原有的代碼基礎上進行修改。那麽首先可以使用git revert HEAD^ 撤銷上一次的commit,

現在是這樣的,我們新增了一行代碼,然後提交,

技術分享圖片
然後又把那一行代碼刪了,
技術分享圖片
然後繼續提交,查看下log
技術分享圖片

現在我們需要恢復到刪除前的代碼上做修改
技術分享圖片

運行結果顯示:上面這一行命令新增了一次commit,它的內容和上一次commit的內容是相反的,這樣從而達到撤銷的效果。
打開test.js看下內容
技術分享圖片

小結

  1. 如果出錯的內容是提交在遠程自己的 branch:只需要在本地把內容修正後,強制 push (push -f)一次就可以解決;
  2. 如果出錯內容已經合並到master上:不要強制 push,而要用 revert 把寫錯的 commit 撤銷。

git操作之發現push到遠程倉庫的代碼有誤