git相关

作者: 幻如常 | 来源:发表于2021-04-06 09:02 被阅读0次

git相关

  • 注意点:
    1. git命令log与reflog的区别:

      • git log 命令可以显示所有提交过的版本信息(commit)
      • git reflog 可以查看所有分支的所有操作记录(包括已经被删除的commit记录和reset的操作)
    2. git log命令只是将最开始到当前版本的所有的commit id打印出来,而如果当前这个版本是由最新版本回退来的,那么最新版本的信息并不会通过git log命令打印出来(例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。)

      1.当我们调用 git log --pretty=oneline
          命令后,显示的结果为:
      
      557ced45a3965430d4d485864709a0b58c8f0053 又修改了a.txt
      0ffd57a25d96ba67d996c07462850fe10eaadbf0 修改了a.txt文件
      ee402f5927b1b0d81632260527a92763da25c26d 创建了a.txt文件
      203e1db947fa11267d7682b598094f5a7b013a8d 新建了readme.txt文件
      
      可以看到最新的版本为"又修改了a.txt"这个
      2.此时我们要回退到上一个版本(执行git reset --hard head^
      命令),显示的结果为:
      
      $ git reset --hard head^
      HEAD is now at 0ffd57a 修改了a.txt文件
      
      再执行git log --pretty=oneline命令,发现结果如下:
      
      $ git log --pretty=oneline
      0ffd57a25d96ba67d996c07462850fe10eaadbf0 修改了a.txt文件
      ee402f5927b1b0d81632260527a92763da25c26d 创建了a.txt文件
      203e1db947fa11267d7682b598094f5a7b013a8d 新建了readme.txt文件
      
      此时这里是并不存在"557ced45a3965430d4d485864709a0b58c8f0053 又修改了a.txt这个的",因为已经被回退了,当前最新的就是"修改了a.txt文件"这个版本
      
      那么如果我后悔回退了呢,我现在就想回到"又修改了a.txt"这个版本该如何操作呢?
      首先执行 git reflog命令,得到结果如下
      
      $ git reflog
      0ffd57a HEAD@{0}: reset: moving to head^
      557ced4 HEAD@{1}: reset: moving to 557ced4
      0ffd57a HEAD@{2}: reset: moving to head^
      557ced4 HEAD@{3}: reset: moving to 557ced4
      0ffd57a HEAD@{4}: reset: moving to head^
      557ced4 HEAD@{5}: commit: 又修改了a.txt
      0ffd57a HEAD@{6}: commit: 修改了a.txt文件
      ee402f5 HEAD@{7}: commit: 创建了a.txt文件
      203e1db HEAD@{8}: commit (initial): 新建了readme.txt文件
      
      所有的操作记录都在这里了,此时找到"又修改了a.txt"版本对应的id(557ced4),再执行git reset --hard 557ced4命令,就得到了如下结果
      
      $ git reset --hard 557ced4
      HEAD is now at 557ced4 又修改了a.txt
      
      此时就回到了我们最开始的状态
      
    3. git checkout -- filename(撤销修改,这是针对单个文件或者单个操作而言,不是针对整个版本,--后面有空格)的注意点.

      • 如果当前的修改被加到了缓存区,即调用了add命令,那么不管有没有调用commit命令,再执行git checkout撤销时,都会回到添加到缓存区的状态
      • 如果当前的修改没有加到缓存区,即没有执行add命令,只是在工作区而已,那么再执行git checkout撤销时,当前所有的修改都会消失,回到最新提交commit时的状态(等于你的代码白写了...)
      • 总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态.
    4. 删除文件后也要记得add和commit一下,保证和本地版本库状态一致

    5. 分支管理

      • 查看当前分支 git branch
      • 新建分支 git branch 分支名字
      • 切换分支 git checkout 分支名字
      • 创建分支并同时切换到分支 git checkout -b 分支名字(注意这里的-b是固定写法,创建的意思,后面才是我们为分支取的名字)
      • git merge 分支名字(将分支合并到当前分支,比如当前分支为dep,而要合并的分支bt,那么git merge bt的意思就是将bt分支合并到dep这个当前分支)
      • 注意注意注意:如果在某一个分支创建了文件或作了修改,不管是否add,只要没到commit这一步,那么在其他任何分支都能看到当前创建的文件或作的修改,所以得出结论:在工作区和缓存区做的所有操作都被所有分支共享,所有分支都可以对其进行操作,只有被某一个分支commit后才会归属到那个分支.
      • 删除分支(被删除的分支不能是当前的分支):git branch -d 分支名字
    6. 在idea中,在分支A修改了代码,但是没有commit就直接合并到其他分支(比如主干)时,会将所做的修改合并到其他分支去,但是分支A自己的修改就丢失了,只有分支A先commit再合并到其他分支,才会两边都有修改状态

相关文章

  • git基本命令

    git常用命令 git丢弃更改相关 git连接远程仓库相关 git切换分支相关 git stash相关 git标签相关

  • 前端 | Git的学习

    文章目录 Git相关命令 Git相关命令 git init :初始化本地git目录,生成 .git 文件夹 git...

  • 2019-06-26: Git 相关?

    一:Git相关 '--------------------------git pull--------------...

  • Git相关

    关联到GitHub http://www.runoob.com/git/git-remote-repo.html

  • Git相关

    更新 fork 的仓库 https://github.com/lxconan/java/blob/master/s...

  • git相关

    常见命令 git help git config --global user.name "一纸砚白" git co...

  • git 相关

    2018年3月27日15:31:29 用eclipse 用习惯了,换着思维使用一下git,服务器用的是coding...

  • git相关

    https://www.jianshu.com/p/52694939213b

  • git相关

    本地创建新分支: git checkout -b 新分支名字 或者 git branch 新分支名字 git br...

  • git 相关

    1,git clone .. 克隆远程分支到本地。 2,git checkout branchName 在本地切换...

网友评论

      本文标题:git相关

      本文链接:https://www.haomeiwen.com/subject/qscskltx.html