1. 程式人生 > >git提交到HEAD detached導致程式碼丟失;找回方法和分析

git提交到HEAD detached導致程式碼丟失;找回方法和分析

背景

今天線上出現bug, 在切換到舊版本的時候,由於誤操作導致原生代碼丟失,找回巨費時,特記錄如下;

bug產生原因

首先在master分支上開發,線上出現bug且回到舊版本的tag,這時master分支上有一部分程式碼修改但未提交。

當前在master上:執行git status 有未提交的程式碼


當前在master上:執行git tag檢視標籤資訊

這時未提交程式碼,執行了git checkout v1.0


當前分支是detached,此時提交git add ./ git commit , 然後又執行了git checkout master,此時detached分支不見了,master上未提交的程式碼也沒有了.....

程式碼找回

執行: git reflog可以看到提交記錄


git co 247e11b

此時,依次執行git checkout 247e11b

git checkout -b diff

git checkout mastergit merge diff

程式碼成功找回

作者:riverli連結:https://www.jianshu.com/p/f247a27851fb來源:簡書著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關推薦

git提交HEAD detached導致程式碼丟失找回方法分析

背景 今天線上出現bug, 在切換到舊版本的時候,由於誤操作導致原生代碼丟失,找回巨費時,特記錄如下; bug產生原因 首先在master分支上開發,線上出現bug且回到舊版本的tag,這時master分支上有一部分程式碼修改但未提交。 當前在master上:執行git status 有未提交的程式碼

git檢視提交歷史並進行程式碼回退的方法

那麼如何檢視一個檔案所進行過的提交呢? 在git下來的原始碼目錄下,執行git log 檔名  即可檢視到有關此檔案的所有提交; 例如: [email protected]:~/plugins/automount$ git log  gsd-manager.c commit 28810e41dbdd

git add.後回退 程式碼丟失

記錄一次操作git丟失程式碼的過程: 寫完程式碼後:git staus git add. git status 發現有一堆.class 檔案不想提交,想著程式碼回退到add 之前,使用了 git log 開始版本回退: git reset -- hard HEAD^(當時寫錯了

使用ifame嵌入其他系統,導致session丟失的解決方法

檢查一下同一個域名下的weblogic應用的sessionid名稱配置,不要設定成預設的jsessionid,會產生session的丟失的情況。sessionid命令格式:jsessionid_xxx(應用標識)。

php 表單提交大量數據發生丟失的解決方法

增加 google 100% lsp htm 默認 files 奇怪 ble 最近在項目中,出現一個奇怪的現象,有一個大form裏面有上千個input,提交的時候,老是發現post過來的數據不完整,一開始還懷疑是html 表單名稱有沖突,排除掉了。然後,網上找了一堆,php

一個磁碟I/O故障導致的AlwaysOn FailOver 過程梳理分析

下面是我們在使用AlwaysOn過程中遇到的一個切換案例。這個案例發生在2014年8月,雖然時間相對久遠了,但是對我們學習理解AlwaysOn的FailOver原理和過程還是很有幫助的。本次FailOver的觸發原因是系統I/O問題。大家需要理解,作業系統I/O出現了問題不一定立即觸發SQL Server發生

Android 耗時程式碼(ANR)的查詢檢測分析解決 TraceView的使用手冊

DALVIK THREADS (21): "main" prio=5 tid=1 Sleeping   | group="main" sCount=1 dsCount=0 obj=0x76af9fb0 self=0x7f9b49a000   | sysTid=4423 nice=0 cgrp=default

程式碼重構之法——方法重構分析

# 程式碼重構之法——方法重構分析 ## Intro 想要寫出比較優秀的程式碼,需要時刻警惕程式碼中的壞味道,今天想寫一篇文章介紹一下如何分析你的方法是不是需要考慮重構 一個方法通常有三個部分組成,輸入(Input),輸出(Output),方法體(Method Body),我們就從這三個方面來分析一個方

Git HEAD detached from XXX (git HEAD 遊離) 解決辦法

直接 結果 merge img 匿名 out 一個 mil ron 什麽是Head git中的head可以理解為一個指針,我們可以在命令行中輸入 cat .git/HEAD查看當前的head指向哪兒,一般它指向當前工作目錄所在分支的最新提交

eclipse下使用git提交程式碼時,設定忽略不需要提交的檔案

eclipse下使用git提交程式碼時,有很多檔案是不需要提交的,例如:target目錄下的檔案和classes下的檔案都不需要提交。 這裡講解一下如何忽略不必要的檔案。 方案一: 為專案新增.gitignore檔案,在該檔案中配置需要忽略的檔案。(Eclips

IntelliJ IDEA中用git提交程式碼時忽略檔案的設定

在用intellijidea開發時,經常會用git或其他版本管理工具提交程式碼到遠端。 但是idea預設會把所有隻要本地與遠端不同的檔案都會列出來, 實際上像字尾名是.iml, .idea這類檔案是不需要提交的。 如下圖所示 如果每次都手動取消這些檔案,都是些重複性的操作。 按如下操作可一

git提交原生代碼到遠端倉庫之前沒有pull導致push失敗解決辦法

git push錯誤failed to push some refs to的解決 當我們在github版本庫中發現一個問題後,你在github上對它進行了線上的修改;或者你直接在github上的某個庫中新增readme檔案或者其他什麼檔案,但是沒有對本地庫進行同步。這個時候當你再次有commit

git提交程式碼邏輯/sourceTree錯誤:fatal: Authentication failed for...認證倉庫地址失敗

1.確定公鑰是否在teamcode中存在 2.不存在,在teamcode頁面的setting中設定新增(git生成公鑰的命令獲取公鑰---git batch) 3.存在,則是賬號的問題(原來有一個公司的賬號,然後出bug重新換了一個賬號,是同一家公司的賬號,down程式碼時候是用的原來的賬號

怎樣快速找到某一行程式碼git提交記錄

利用notepad++提高問題分析效率,以及快速找到某一行程式碼的git提交記錄 1. 全目錄搜尋/替換         Notepad++是一款強大的文字編輯工具,當知道大概的關鍵詞但不知道在哪個日誌時可以使用notepad++的檔案搜尋功能,在整個目錄

git提交程式碼出現can not merge的解決方法

git出現can not merge的解決方法 當git提交多次時,後提交的程式碼先合入,先提交的程式碼會出現can not merge問題,下面是解決方法。 1、先執行命令: git stash 注:此命令是備份當前的工作區,防止當前工程中已修改的程式碼出現丟失,同時將工作區中的程式碼儲存

Git提交程式碼的流程

         企業級專案git遠端倉庫一般是由master/test/dev三個分支構成,開發人員是在dev上做開發,當需要釋出測試環境或者生產環境時管理員會把開發人員提交的程式碼合併到test或者ma

idea使用git提交程式碼到遠端,這裡是沒有衝突的演示

首先在專案滑鼠右鍵,找到Git,然後在Git選項裡找到Add,點選; 新增到暫存區後,再次找到Git,找到Commit Directory,點選; 然後彈出這個介面: 選中你自己修改的記錄,一些不必要的就不用提交了,例如 這些檔案就不用提交了,把鉤去掉即可,填寫Commit Messa

已有本地專案使用git提交程式碼到碼雲coding

進行下面步驟之前,請先在電腦上要裝git工具,官方下載地址:https://git-scm.com/download/win,而且要有coding(程式碼管理)賬號,coding網址:https://coding.net/,可以使用微信或qq登入,然後進行操作 1.在coding上新建一個專案,

Git提交程式碼詳細步驟

【0】首先安裝git客戶端,類似於svn的TortoiseSVN 可見下列下載: https://download.csdn.net/download/qq_30546099/10524340 一個安裝包,一個漢化包, 順序安裝即可。

git 提交程式碼過程 (mac)

1、檢查分支 git branch 2、pull 一下程式碼,以免衝突            e.g.      git pull origin 180907_maya_mst