原文鏈接請標明:
http://blog.csdn.net/u011974987/article/details/52913925
本文出自:【stromxu的博客】
歡迎訪問我的博客,增加點兒人氣~~Xuhao’s Blog
現象描述:
我在現有的分支上進行修改代碼,使用git提交本地代碼後,SourceTree上面沒有記錄,我就納悶了,我原本以爲我提交到其他項目了,仔細查看了幾個項目的提交記錄也都沒有,於是退出SourceTree,在打開這個項目還是沒記錄,並且最新修改的分支在兩個版本之前的Develop v2.2.2分支(這個我記得我是在最新的分支上開發的,不排除我在其他分支上進行開發的情況),不過這個都不是事兒,怎麼恢復修改的代碼到最新的分支上面呢?下面提供解決方案~~
解決方案:
- 打開gitbash 命令行;
- 輸出git log 查看不到提交歷史的歷史記錄;
- 輸入git reflog可以查看所有分支的所有操作記錄(包括(包括commit和reset的操作),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄。
上面紅色箭頭指的地方就查看不到記錄。
4. (上面已經說明了,當前最新提交的分支在v2.2.2上)然後我們要恢復5d3c053 這個分支到v2.2.4上面,那我們就要使用git cherry了。
5. 使用 cherry-pick. 根據git 文檔:
Apply the changes introduced by some existing commits
就是對已經存在的commit 進行apply (可以理解爲再次提交)
簡單用法:
git cherry-pick <commit id>
例如:
$ git checkout old_cc
$ git cherry-pick 67fbeee# 這個 67fbeee號碼,位於:
Commit: 67fbeee108798cf43895db16cdcf91c2b1d5298d [67fbeee]
Parents: fa10c134b8
Author: xuhao <504105930@qq.com>
Date: 2016年10月21日 18:27:14
Labels: tag:, v2.2.3
更改版本號,解決發佈問題標題問題
如上圖:
由於adb install 這個記錄可能在v2.2.2分支提交的,現在要把這個分支提交到v2.2.4分支上;
結果如下:
,
最後之前丟失的那條記錄也出來了,成功的解決了~~,sourceTree記錄圖如下:
總結:不管用什麼工具,只有熟練掌握了命令纔是王道啊~