09-18_git_尚硅谷

命令 #

  1. 命令-设置用户签名

    • 查看 git config user.name git config user.email
    • 设置 git config --global user.name ly001 git config --global user.email xxx@xx.com
    • git的配置文件查看 ly-20241212142119718
    • 作用:区分不同操作者身份,跟后面登陆的账号没有关系
  2. 初始化本地库

    • git init

      ly-20241212142119957 多出一个文件夹 ly-20241212142120049

  3. 查看本地库状态

    • git status ly-20241212142120138 默认在master分支
    • 新增一个文件 vim hello.txt ly-20241212142120222
    • 此时查看本地库的状态 ly-20241212142120310 untracketd files 未被追踪的文件,也就是这个文件还在工作区
  4. 添加暂存区

    • git add hello.txt ly-20241212142120403 LF 将会被替换成 CRLF,windows里面是CRLF,也就是说

      这个换行符自动转换会把自动把你代码里 与你当前操作系统不相同的换行的方式 转换成当前系统的换行方式(即LFCRLF 之间的转换)

      这是因为这个hello.txt是使用vm hello.txt在git bash里面添加的,如果直接在windows文件管理器添加一个文件(hello2.txt),就会发现没有这个警告,因为他已经是CRLF了 (为了和视频保持一致,git rm –cached hello2.txt 后删除这个文件) ly-20241212142120487

    • 查看当前状态,绿色表示git已经追踪到了这个文件

      文件已经存在于暂存区 ly-20241212142120577

    • 使用git rm --cached hello.txt可以将文件从暂存区删除 使用后,文件又出现在工作区了(未添加) ly-20241212142120667

  5. 提交本地库

    • git commit -m "first commit" hello.txt 会出现一些警告,以及此时提交的修改和生成的版本号(前七位) ly-20241212142120750 git status ly-20241212142120837

    • 使用git reflog查看引用日志信息 git log 查看详细日志信息 ly-20241212142120925

  6. 修改命令

    • 前提,修改了文件 ly-20241212142121012

    • git status

      ly-20241212142121103红色表示git还没有追踪到这个修改,如果此时commit ,会提示没有需要commit的 ly-20241212142121194

    • 使用git add hello.txt 将文件修改添加到暂存区 之后git status ly-20241212142121282

      • 注意,这里如果提交到暂存区之后,使用git restore是无法恢复文件的

        ly-20241212142121366

      • git restore --staged <file>..." to unstage 使用这个命令丢弃这个文件的commit操作

        几个命令的区别:

        • git restore file 的命令是丢弃你在工作区修改的内容,(修改的内容会丢失)
        • git restore –staged file 丢弃你在工作区的修改不被 commit 。但是你的修改依然在工作区。
        • git rm –cached file和git restore –staged file 效果好像一样,这里不做更进一步的分析
    • 回到最初,这里主要是为了看修改,如最上面,将第一行后面添加了22222

      commit 之后的提示,删除了一行,添加了一行(修改的另一种说法) ly-20241212142121453

    • 如果,HEAD -> master ,指针指向了第二个版本 ly-20241212142121542

    • 这里再做第三次修改,并add 及commit ly-20241212142121627

    • 查看工作区,永远只有最后那次修改的文件 ly-20241212142121713

  7. 版本穿梭

    • git reflog和git log ly-20241212142121795

    • 回顾:hello.txt先是5行,然后第一行加了2,之后第二行加了3

    • 使用git reset –hard 版本号进行穿梭,这里多了一行,是因为我复制的时候复制粗了版本号

      ly-20241212142121879

      使用cat 查看,发现文件已经在另一个版本 ly-20241212142121967

    • 查看.git的一些文件 ly-20241212142122054 说明目前是在master这个版本上 下面这个文件 .git/refs/heads/master 记录了指向master分支的哪个版本号 ly-20241212142122139

    • 这里将文件指向最初的版本 ly-20241212142122223

      • 此时查看刚才说的那个记录某个分支当前指向版本的文件,已经做了更新 ly-20241212142122306
    • ly-20241212142122389

    • 再穿梭为后面的版本 git reset –hard file ly-20241212142122476

    • 图片解释 ly-20241212142122562 master指针指向first,second,third head永远都是指向master(当前分支,目前只有master,所以不变)

分支 #

  1. 概述和优点 ly-20241212142122644 ly-20241212142122731

  2. 查看&创建&切换

    git branch 分支名    #创建分支
    git branch -v       #查看分支
    git checkout 分支名  #切换分支
    git merge 分支名     #把指定的分支合并到当前分支上
    
    • 查看分支并显示当前分支指向的版本 git branch -v ly-20241212142122814

    • 创建分支 git branch hot-fix git branch #再次查看 ly-20241212142122897

    • 切换分支

      git branch hot-fix 此时修改一个文件并提交 ly-20241212142122981 ly-20241212142123065 查看.git/head文件,会发现现在它指向hot-fix分支 ly-20241212142123149 ly-20241212142123231

  3. 合并分支(正常合并)

    • 切换分支 ly-20241212142123313

    • 将某分支xx合并到当前分支 git merge 分支名

      ly-20241212142123396 如图,合并成功 以后面那个分支的修改为主

  4. 合并分支(冲突合并)

    • 前提,现在master分支倒数第二行修改并添加和提交 ly-20241212142123479 ly-20241212142123566

    • 此时切换到hot-fix分支 修改倒数第一行 ly-20241212142123648 将文件从工作区添加到暂存区并提交到本地库 ly-20241212142123735

    • 此时再切回master

      git checkout master
      git merge hot-fix
      

      ly-20241212142123836

    • 提示出错了,而且所有有异常的文件,都以下面的形式标注 ly-20241212142123923 按dd进行删除某一行 ly-20241212142124003 改完了之后,保存并提交即可 ly-20241212142124090 切回之后查看hot-fix分支,发现这里的文件是没有变化的 ly-20241212142124170

    • 原理 ly-20241212142124252 ly-20241212142124331