zoukankan      html  css  js  c++  java
  • Git命令使用(二)

    git pull、git fetch、git reset、git revert的区别用法


    git pull

    fetch from a remote repo and try to merge into the current branch.
    pull == fetch + merge FETCH_HEAD
    git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit.    
    如果使用--rebase参数,它会执行git rebase来取代原来的git merge.
    

    git fetch

    download new branches and data from a remote repository.
     可以git fetch [alias]取某一个远程repo,也可以git fetch --all取到全部repo
    fetch将会取到所有你本地没有的数据,所有取下来的分支可以被叫做remote branches,它们和本地分支一样(可以看diff,log等,也可以merge到其他分支),但是Git不允许你checkout到它们. 
    

    git reset

    reset 根据这个英文单词的意思直译的就是重置,就是还原的意思,在git中也是一样,用来将HEAD指针还原(指向)到某个提交(commit)。他是还原一段的,也就是说,如果这个commit 在log的中间位置,那么这个commit 之后的提交有可能都会消失掉!所以这个命令是蛮危险的。

    git reset 命令的使用最多的2种形式是:

    git reset commitId 
    git reset --hard commitId
    

    不加任何参数 表示是软重置,它会改变本地HEAD的指针, 指向3deb0e4, 并把643a5ee这一步的提交,还原到工作区,我们可以再加工或者其他的操作。所以它是非常安全的。

    --hard commitId 强制移动指针到这个分支,会销毁它前面的所有的信息,本地也没有了,是蛮危险的一种行为。

    总结下:

    如果暂缓区是干净的,可以用 git reset HEAD~ 或者 {id} 还原到上一次 或者 几次前 的修改,加 --hard 强制还原。
    如果暂存区有数据没有commit,用git reset HEAD {file} 来移除暂缓区。

    git revert

    revert 根据这个英文单词的意思直译的就是恢复,撤销。git里面,用来撤销某一次提交(commit) 。他只会撤销这一次提交,无论这个commit在log的哪个位置,不会影响上下的提交。而且他会将撤销的作为一个新的commit提交。

    git revert命令就温和的多,它仅仅是移除这个commit,而不是将指针移动到这个分支,所以这个命令常常用来回滚操作。

    作者:T&D
    Q Q:335749143
    邮箱:tanda.arch#gmail.com(@替换#)
    出处:http://www.cnblogs.com/one-villager/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    46. 全排列
    90. 子集 II
    289. 生命游戏
    844. 比较含退格的字符串
    1266. 访问所有点的最小时间
    707. 设计链表
    DOM 关于dom的
    插件库
    浏览器判断
    FTP 客户端安装
  • 原文地址:https://www.cnblogs.com/one-villager/p/git_use_2.html
Copyright © 2011-2022 走看看