git push 錯誤,回滾 push操作


作者: 故事我忘了
個人微信公眾號: 程序猿的月光寶盒

0.記一次使用git push后,覆蓋了同事代碼的糗事

前言:

​ 都在WebStorm中操作,Idea或者PyCharm同理

​ 為了高度還原尷尬現場,這里在原有項目上新建分支,然后都在分支上操作,一方面怕自己搞炸了,一方面真實環境就是如此

1.還原案發現場的准備工作

1.1 新建分支

圖片

圖片

圖片

注意:

這里創建的分支僅僅在本地倉庫

1.2. 分支提交到遠程Git倉庫

圖片

遠程查看確認,確實有,說明分支已經創建

圖片

2.糗事發生契機

​ 這時候別人可能會和你改同一文件

2.1 假設文件是這個html文件,然后你上傳到遠程分支

注意這時候都是在剛創建的那個分支操作

圖片

圖片

​ 可以看到遠程分支已經有了

圖片

2.2 這時我用另一電腦修改這個文件,並提交到遠程,故意模仿他人操作,如圖,在遠程分支上Linux已經更新過

圖片

2.3 本地文件也做不一樣的修改,假設自己再不知情的情況下做push操作必然會引起版本沖突

圖片

Remote changes need to be merged before pushing

推送前需要合並遠程更改

​ 這時你點了合並

圖片

圖片

圖片

​ 上圖,把你的和他的都合並提交,但是出現如下警告

圖片

Push has been cancelled, because there were conflicts during update. Check that conflicts were resolved correctly, and invoke push again.

Push已被取消,因為在更新期間有沖突。檢查沖突是否已正確解決,並再次調用pull。

2.4 此時本地我已經做了版本合並,所以,再次pull

圖片

3. 正事來了.回滾吧

​ 現在,你被告知Linux的為正確的修改,並且你上一步的提交影響到他了,要回滾pushLinux操作的階段

圖片

3.1 將win給回滾調,留下Linux的代碼

步驟

1. 在目標分支上copy revision number

圖片

2. 右擊項目依次選中:git->Repository->Reset HEAD

圖片

圖片

Reset Type選Hard,To Commit 寫剛復制的版本號,

然后點擊Reset按鈕

這時候,代碼已經回到了老的版本,這個時候不能提交代碼,提交也是會沖突的。

4.提交

1.可以使用命令強制提交

  git push -f

或者

2.使用Idea,(我使用的是這個方法)

  在最新的commit上復制版本號

圖片

使用mixed類型,將上面復制的版本號粘貼進來:

圖片

git reset soft,hard,mixed之區別深解

git reset soft,hard,mixed之區別深解

圖片

圖片

又出來這個提示

圖片

3.再次push

圖片

​ 此時 代碼是最新的正確的,

​ 也就是Linux操作的正確修改

5:驗證 上一步的強制push git push -f

1.說明

  將程序從錯誤的復原,回滾到win操作

2.步驟

  按照上面的步驟進行操作。

  在后面提交的時候,直接強制提交,

圖片

則效果是:

圖片

可以看到一開始的

對應遠程的文件

圖片

至此就恢復以及修改了,Linux端只要pull一下就行了,就是最新代碼

圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM