zoukankan      html  css  js  c++  java
  • git之时光机穿梭

    版本回退

    • HEAD指向的版本就是当前版本,使用命令git reset --hard commit_id可以在版本之间穿梭

    • 可以通过git log查看提交历史,来确认回退到哪个版本

    • 如果不小心关掉了git bash,可以通过git reflog查看命令历史,以便确认要回到未来的哪个版本

    工作区和暂存区

    工作区(Working Directory)

    • 电脑中可以看到的目录

    版本库(Repository)

    • 工作区中有一个隐藏的版本库--.git

    • 版本库中最重要的就是暂存区(stage)Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    • 当通过git add添加文件时,实际上是把文件暂存到了stage

    • 通过git commit提交时,就是将暂存区的所有内容提交到当前分支

      • 因为创建Git版本库时,Git自动创建了第一个分支master,所以目前git commit就是往master分支上提交更改

    管理修改

    • git管理的是修改,而不是文件。即修改了某一行或某个单词。

    • 如果修改了文件内容,而没有进行git add,则修改并没有保存到暂存区,那就不会加入到commit

    撤销修改

    git checkout -- <file>

    • 丢弃工作区的更改

      • 情况1:修改了工作区,但未提交到暂存区

      • 情况2:提交到暂存区后又修改了工作区,但未再次提交到暂存区

    git reset HEAD <file>

    • 丢弃暂存区的提交

      • 此时工作区的修改还存在,如果想丢弃,则继续使用git checkout -- <file>

    删除和撤销删除

    • 当通过手动或命令rm <file>删除工作区文件后,如果真的想删除该文件,通过git rm <file> git commit -m "..."删除版本库中的文件,不可恢复

    • 而如果不小心误删,想恢复的话,通过命令git checkout <file>恢复

    • git checkout <file>实际上就是让工作区的内容与版本库中的保持一致

  • 相关阅读:
    线程
    unix架构
    Unix命令
    可重入函数reentrant function
    Eclipse 中 program arguments 与 VM arguments 的区别
    Java中Generics的使用
    Java的Reflection机制
    Java按值传递、按引用传递
    Java label
    LeetCode Merge Intervals
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12559910.html
Copyright © 2011-2022 走看看