• Git分支高级管理[四]


    标签(linux): git

    笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流

    切换分支

    git checkout
    

    撤销对文件的修改

    git checkout --file.ext
    
    • checkout一个文件和带文件路径git reset非常像,除了它更改的是工作目录而不是缓存区。不像提交层面的checkout命令,它不会移动HEAD引用,也就是你不会切换到别的分支上去
    • 如果你缓存并且提交了checkout的文件,它具备将某个文件回撤到之前版本的效果。注意它撤销了这个文件后面所有的更改,而git revert命令只撤销某个特定提交的更改

    撤销对文件的修改

    [root@git test]# git status 
    On branch about
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   index.html
    
    no changes added to commit (use "git add" and/or "git commit -a")
    [root@git test]# git checkout -- index.html
    [root@git test]# git status 
    On branch about
    nothing to commit, working directory clean
    

    git reset

    • --soft 缓存区和工作目录都不会被改变
    • --mixed 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
    • --hard 缓存区和工作目录都同步到你指定的提交
      虽然在调用时加上 --hard选项可以令git reset成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。不加选项地调用git reset并不危险——它只会修改暂存区域

    git reset HEAD~2

    执行命令后:

    reset命令的影响

    文件层操作

    • 当检测到文件路径时,git reset将缓存区同步到你指定的那个提交。比如,下面这个命令会将倒数第二个提交中的foo.py加入到缓存区中,供下一个提交使用。
    • git reset HEAD~2 foo.py
    • 运行git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工作目录中对foo.py的更改
    • --soft、 --mixed和--hard对文件层面的git reset毫无作用,因为缓存区中的文件一定会变化,而工作目录中的文件一定不变。

    reflog

    • git reflog命令分析你所有分支的头指针的日志来查找出你在重写历史上可能丢失的提交

    总结

    命令 作用域 常用情景
    git reset 提交层面 版本回滚,,在私有分支上舍弃一些没有提交的更改
    git reset 文件层面 将文件从缓存区中移除
    git checkout 提交层面 切换分支或查看旧版本
    git checkout 文件层面 舍弃工作目录中的更改
    git revert 提交层面 在公共分支上回滚更改
    git revert 文件层面 (没有)

  • 相关阅读:
    EL&Filter&Listener:EL表达式和JSTL,Servlet规范中的过滤器,Servlet规范中的监听器,观察着设计模式,监听器的使用,综合案例学生管理系统
    Node搭建api接口
    菜鸟程序员的react TodoList练习之旅
    js 手机靓号正则
    js 去除省市区
    select 下拉框在手机上第一次点击获取不到值
    ios下输入框聚焦文字显示不出来
    浅谈js中的深浅拷贝
    原型和原型链
    将多个对象合并成一个数组的方法
  • 原文地址:https://www.cnblogs.com/Csir/p/7382574.html
Copyright © 2020-2023  润新知