美文网首页
git 下项目功能回退

git 下项目功能回退

作者: xwp | 来源:发表于2017-02-23 15:59 被阅读10次

    1.前言

    需要把以前的功能弄回来,但是已经是一个月前的事了,git下如何操作呢.

    2.过程:

    ubuntu系统。
    git UI工具快速找到需要差异化提交,用cola发现无法复制对比差异。
    按我的想法,找到去掉功能提交前的commit记录,对比下,copy整理下就能快速搞定了。
    发现cola对比差异无法编辑,只能用vi编辑,vi不会用,学了下感觉搞不通。
    所以我得找其他的UI化git视图。用AS自带的能直接复制,解决了这个问题。
    但是AS不会展示删除的文件。就没法新建文件复制代码。

    接下来我要恢复被删除的文件。找了挺久,发现下面这个:
    http://www.linuxidc.com/Linux/2014-09/107293.htm
    精华如下:

    1. 通过git log -g命令来找到我们需要恢复的信息对应的commit_id,可以通过提交的时间和日期来辨别。一个好的办法是运行:1、git log --since="2 weeks ago" -- myfile 可以2个星期期间的myfile历史;2、git log --branches="develop" 可以查看develop的commit
    
    2. 通过git branch recover_branch[新分支] commit_id 来建立一个新的分支
    
    这样,我们就把丢失的东西给恢复到了recover_branch分支上了。
    
    Q:如果是不小心执行了git reset,还有办法取消吗?
    
    A:git reflog 查看操作历史,找到之前 HEAD 的 hash 值,然后 git reset --hard 到那个 hash 即可。
    
    Q:怎样找回历史版本中删除的文件?
    
    A:先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么
    git checkout [commit_id] -- <path_to_file>就可以恢复
    

    我直接 git checkout 2e0xxxxxxxx -- ./app/src/main/res/layout/xxxx_item.xml
    刷新目标父目录,文件回来了。
    哦啦。
    小提示:恢复的版本应该选改动提交前的版本,AS中Copy Version Number就能快速得到提交的SHA,即提交id.

    补充:

    后面我发现AS其实是有显示删除文件的,可能因为我是直接重命名文件再修改,git认为是删除了文件,再添加文件。而智能的AS显示的是修改。如此一来也可以copy and paste.

    3.后话

    对工具的运用,追求效率方法。不知还有更快的方法没,回退较久提交的功能代码。
    功能回退最好一个个退,一下会几个commit记录事件跨度太大可能会混乱。

    有,请告诉。。。。。。。。。

    相关文章

      网友评论

          本文标题:git 下项目功能回退

          本文链接:https://www.haomeiwen.com/subject/lihbwttx.html