git相关

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再合并到其他分支,才会两边都有修改状态

    7. git grep '@RequestMapping' > app-api.csv (将所有的接口导出)

你可能感兴趣的:(git相关)