網站首頁 編程語言 正文
一、背景
我在pycharm提交代碼的時候,因為對git和pycharm不是很熟悉,在提交代碼到遠程倉庫遇到沖突后選擇應用遠端代碼導致把本地代碼全部刪除。之后不知道代碼恢復方法,又把代碼重新寫了一遍,非常浪費時間,導致開發效率低下。
這個問題的相關解決方法在網上比較零碎也不詳細,下面我通過自己的實踐一步步說明如何解決這個問題。
二、沖突產生原因
簡單來說,就是一個以上的人對代碼進行不同修改,在進行合并的時候git無法判斷如何merge。
舉例一個最常見的情況,在同一個開發分支上,A和B都拉取了版本1,A在版本1上修改了一行代碼,并且把這次修改commit,生成版本2。之后,B不知道A的修改,也在版本1上修改了同一行代碼,B打算提交此次修改,在pull的時候就會產生沖突。
三、解決方法
3.1 pycharm誤刪代碼怎么處理
右鍵點擊當前項目,找到Local History->Show History
點開之后,就會彈出一個框,左側是文件名稱,找到相對應的名稱,打開,賦值代碼
3.2 解決pull --rebase代碼沖突
command+t產生沖突后,pycharm會彈出提示框把沖突標注出來。
從左到右分別是自己本地修改的代碼,你上一次pull下來的未修改前的原版代碼,遠端分支最新版本。
選擇自己修改的版本或者遠端最新版本
在這個彈出的提示框最下面,Accept Left選擇自己的版本或者Accept Right選擇遠端最新版本
放棄合并:
點擊abort,放棄合并回到rebase之前的狀態
會出現Abort and Rollback applying patch or Skip this file?提示,直接確認就行了
手動合并:
和同事商量后在中間的代碼塊進行合并修改,修改完點擊Apply
再點擊Apply Changes and Mark Resolved,pull之后就會發現,拉下來的沖突代碼塊展示的是自己剛剛修改的語句。
3.3 備份代碼
- 最簡單的直接把代碼所有文件復制一份
沒啥好說的,跳過
- 保存在git暫存區(本質是一個棧)
單個stash:
- git stash // 把還未提交的代碼存到暫存區
- git stash pop // 取出代碼
多個stash:
- git stash save 名稱 // 暫存代碼
- git stash pop // 取出最近一次存的代碼
- git stash list // 查看所有暫存代碼
- git stash apply stash@{} // 取出暫存區對應代碼,根據list結果寫指令
四、重點注意事項
- 必須先pull再push!!push沒有處理沖突的能力,會直接報錯
- pull --rebase與遠程代碼同步,同步過程中會檢測沖突
- 推薦手動合并!!
- 在合并代碼前做好備份很重要!!之后誤操作導致代碼被刪也可以直接恢復!!記得備份!!尤其是剛參加工作或者剛參與大型項目的同學
原文鏈接:https://juejin.cn/post/7130904723409862693
相關推薦
- 2023-04-28 react如何獲取URL中參數_React
- 2023-07-07 什么是 Spring 框架?使用 Spring 框架的好處是什么?Spring 框架中用到了哪些設計
- 2023-03-28 python如何實現向上取整_python
- 2023-01-30 Android?Https證書過期的兩種解決方案_Android
- 2022-03-25 centos系統安裝Kubernetes集群步驟_Linux
- 2023-07-05 cnpm安裝appium出現cannot find module xxx
- 2022-11-02 react父組件更改props子組件無法刷新原因及解決方法_React
- 2022-10-09 .NET擴展方法使用實例詳解_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支