zoukankan      html  css  js  c++  java
  • git gui 还原部分提交文件

      有时候用git提交文件的时候会一起提交了多个文件,但是突然后悔了,想把其中一个文件撤销提交,其他文件不做修改。这个时候该怎么办呢?

      我觉得有很多办法,比如可以先checkout到上次的提交,然后复制要撤销修改的文件,然后再checkout到最新的版本,再手动复制粘贴。。这样相当于手动去旧版本copy了一个文件覆盖新版本。这样做其实也不难,但是比较烦。。。目录多的时候找文件比较麻烦,另外要撤销的文件多的时候也比较坑爹。。。这个时候其实可以利用git自带的功能来完成任务的。

    Cherry -pick

      cherry-pick用于把另一个本地分支的commit修改应用到当前分支。

      基本百度这个命令都能得到这个答案。。。。。

      但是经过我实验发现这个命令其实并不止局限于2个不同的分支,即使是同一个分支也是能做到的。

      所以说我们的目的怎么达到呢?在最新的版本上利用cherry -pick 命令去把上次提交的合并到当前版本就OK了。

    举栗子~

      现在在版本1提交了2个txt文件,1.txt和2.txt

    修改2个文件以后再提交

    现在我想把1.txt恢复到上次提交,2.txt不变怎么办呢?

    查看master分支历史以后,在上个版本上(init)上右键选择cherry -pick this commit

    然后gui会询问你,这个commit已经在分支上了,是否要继续。。。

    选择是以后,会提示你有冲突,这和我们想的一样,因为上个版本的txt和最新版本的txt肯定不一样嘛。。。

     

    然后就到了解决冲突的界面。。。

    当前local版本是最新的版本,remote的版本是cherry -pick过来的commit版本,所以我们要还原1.txt的话就在1.txt的正文里选择remote的版本,在2.txt里选择local的版本

    然后再提交这次commit就OK了。。。这次commit相当于是做了一个merge。。。

  • 相关阅读:
    ORA-01940: cannot drop a user that is currently connected 问题解析
    Oracle11g数据库导入Oracle10g操作成功
    固态硬盘
    Oracle数据库默认的data pump dir在哪
    navicat 关于orcale新建表空间,用户和权限分配
    oracle 11g 完全卸载方法
    完全卸载oracle11g步骤
    架构设计:负载均衡层设计方案(4)——LVS原理
    C++中使用REST操作
    在C#中实现视频播放器
  • 原文地址:https://www.cnblogs.com/abcwt112/p/4621826.html
Copyright © 2011-2022 走看看