git基础使用(个人理解和笔记)

Git的基础使用

回想起初次使用git是在大二下学期上课的时候,老师给我们推荐的版本管理系统…一直到现在还是处于非常懵*的状态

git的初始化
git config --global user.name "nameString"
git config --global user.email "emailString"

使用 : git config --list

就可以看到刚刚设置的用户名和邮箱名了

那么git记录的是什么呢?

答案: 将每个版本独立保存(空间换时间),压倒性其他版本关系系统

这里开始我们要有一个概念:

三棵树

分别是:

  1. 工作区
  2. 暂存区
  3. Git仓库

那么git的工作流程是怎么样的呢?!

  • 在工作目录中添加,修改文件

  • 将需要进行版本管理的文件放入暂存区中

  • 将暂存区的文件提交到git仓库上

    这就是Git的主要的三部曲

演示

  1. 新建一个文件夹(第一棵树)

    新建一个GitProject的文件夹

    mkdir GitProject
    

    接着往里面增加一些文件随便都可以。

  2. 添加文件到暂存区(第二棵树)

    添加单一的文件,也可以添加多个文件

    git add <file01> <file02> .... 
    

    一次性添加所有文件

    git add . / git add *
    

    成功添加到暂存区之后是没有提示的。

    所以说没有提示就是最好的提示

  3. 提交到git仓库

    提交命令

    git commit -m '这里写提交的日志'
    

    提交之后会有相应的提示信息。

    查看提交过的记录

    git log
    

    这里后面可以带部分参数

    –decorate显示提交的所有引用(包括分支的)
    –all显示所有分支
    –oneline一行显示一个快照(缩略显示)
    –graph图形化的显示分支情况
  4. Git 管理文件的三种状态
    • 已修改(modified)
    • 已暂存(staged)
    • 已提交(commited)
  5. 查看git当前的状态
    git status
    
  6. 撤销文件/恢复文件
    reset命令

    ​ reset命令会更改head指针的指向

    1. 将最近一次提交到git仓库的文件恢复到暂存区中

      git reset HEAD <file>
      

      这里默认是–mixed的模式,这里没有更改head指针的指向还是指向最新的快照

    2. 将最近一次提交到git仓库的文件恢复到暂存区中并且更改 head 指针的指向

      git reset HEAD~ <file>
      

      这里同样也是–miexed的模式,但是这里更改了 head 的指向,指向了上一个快照。

      对比上一条命令 git reset HEAD <file>

      HEAD后面多了一个~ , 那么也就是说。想要更改 head 指针的指向。

      可以对head进行一些操作

      更改head指针,指向上上个快照
      git reset HEAD~~ <file>
      

      以此类推head~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      **也可以这样做 : **

      git reset HEAD~(1,2,3,4,num)
      

      head指针指向上(1,2,3,4,num)个快照

      reset命令的选项
      git reset --mixed HEAD~
      

      这是默认的(影响两棵树)

      • 移动HEAD的指向,将其指向上一个快照

      • HEAD移动后指向的快照,回滚到暂存区

        (影响仓库区和暂存区)

      git reset --soft HEAD~
      
      • 移动HEAD的指向,将其指向上一个快照

        (这里只影响仓库区域,不会影响暂存区)。只是单单的改变head指向而已

      • 相当于撤回上一的**commit**操作

      git reset --hard HEAD~
      
      • 移动HEAD的指向,将其指向上一个快照

      • HEAD移动后指向的快照,回滚到暂存区

      • 将暂存区的文件还原到工作目录

        (硬着来,直接还原指定的快照。有风险)

      回滚到个别文件
      git reset HEAD 版本快照	文件名
      

      这一步head指针不会改变

      也就是说git log里的日志还是有的。

      往回滚,当然也可以往前滚(只要你记住了快照ID)
      git reset 版本快照的ID
      

      注意(默认是–mixed)模式

      回滚的文件放到暂存区,可以check命令拉回来,后面说check

      也可以直接使用--hard 模式

      查看历史所有记录
      git reflog
      
  7. 版本比较

    这里个人觉得用命令进行比较,有点眼花。

    所以不怎么说:

    具体命令:

    比较暂存区工作区

    git diff
    
    

    比较两个历史快照

    git diff 快照ID 快照ID
    
    
    • 快照ID只需要5位上下就可以了。不用全部都输入进去

    比较 当前工作目录快照git仓库中的快照

    git diff 快照ID
    
    

    比较 当前工作目录快照最新git仓库中的快照

    git diff head
    
    

    比较 暂存区git仓库快照

    git diff --cached/--staged [快照ID]
    
    
  8. 修改最后一次提交

    执行带--amend选项的commit提交命令,git就会更正最近的一次提交。

    此时不会产生新的快照

    此时会进入到修改提交说明的界面:

    • i 表示insert
    • 保存退出:esc后,shift+z+z
    • 不希望修改的话:q! 回车就可以了
  9. 删除文件

    • 只是删除工作目录和暂存区的文件

      git rm 文件名
      
      

      也就是取消跟踪,下次提交时不纳入管理

      -f 强制删除 —> --force

    • 删除暂存区文件,保留工作区文件

      git rm --cached/--staged 文件名(*/.)
      
      
  10. 重命名

    git mv 旧文件名 新文件名
    
    

    如果直接更改工作区的文件名,暂存区就会显示检测到被重命名的那个文件被删除了。并且新增了一个重命名后的文件。实质上他们两个文件是同一个文件。只是git没有那么智能化,不能自动识别

  11. 创建分支和切换分支

    创建分支

    git branch 分支名
    
    

    切换分支

    git checkout 分支名
    
    
    • 每个分支都有自己的作用域,也就是每个分支都是独立的,做任何修改都不会影响到其他分支

    合并分支

    ​ 最终分支工作完成后,那么就需要合并分支,交由master分支上线了~

    git merge 分支名
    
    
    • 合并该分支到当前分支上,所以合并分支前,务必确认好再操作

    快捷方式

    git checkout -b 分支名
    
    

    意思:创建并切换到分支

    删除分支

    git branch -d(--delete) 分支名
    
    

    匿名分支

    也就是说没有分支名的分支

    git branch
    
    

    直接进入没有名字的分支,同样具有自己的作用域。不过当切换到其他分支后,该分支上做过的操作都会消失,不过也可以安装git提示把这个匿名分支给予它名字,转换成一个正常的分支

  12. checkout 命令

    checkout命令和reset命令很相似

    • checkout命令功能

    将处于暂存区的文件还原到工作目录

    git checkout --<file> ...
    
    

    将原文件恢复到工作目录

    也就是说暂存区恢复的文件会覆盖工作区的文件

    切换分支

    git checkout 分支名
    
    
  13. checkout和reset区别

    • reset后面带文件时,不能使用--hard--soft模式。也就是说,只能将文件恢复到暂存区

    • checkout则是覆盖暂存区工作区

    checkout从历史快照(暂存区)中拷贝文件到工作目录

    git checkout HEAD~ <file>
    
    

    将会将上一个快照中的file文件复制到工作区和暂存区中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值