作者:故事我忘了¢
個人微信公眾號:程式猿的月光寶盒
目錄
- 0.記一次使用git push后,覆寫了同事代碼的糗事
- 1.還原案發現場的準備作業
- 1.1 新建分支
- 注意:
- 1.2. 分支提交到遠程Git倉庫
- 1.1 新建分支
- 2.糗事發生貧訓
- 2.1 假設檔案是這個html檔案,然后你上傳到遠程分支
- 2.2 這時我用另一電腦修改這個檔案,并提交到遠程,故意模仿他人操作,如圖,在遠程分支上Linux已經更新過
- 2.3 本地檔案也做不一樣的修改,假設自己再不知情的情況下做push操作必然會引起版本沖突
- 2.4 此時本地我已經做了版本合并,所以,再次pull
- 3. 正事來了.回滾吧
- 3.1 將win給回滾調,留下Linux的代碼
- 步驟
- 1. 在目標分支上copy revision number:
- 2. 右擊專案依次選中:git->Repository->Reset HEAD
- 步驟
- 3.1 將win給回滾調,留下Linux的代碼
- 4.提交
- git reset soft,hard,mixed之區別深解
- 3.再次push
- git reset soft,hard,mixed之區別深解
- 5:驗證 上一步的強制push git push -f
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的為正確的修改,并且你上一步的提交影響到他了,要回滾push到Linux操作的階段
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一下就行了,就是最新代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/6640.html
標籤:其他
