Git Note

Git笔记

  1. PRE
    工作区(working tree)——暂存区(index/stage)——仓库(repository) git基础概念

  2. 创建仓库
    git init
    会根据当前的目录创建一个本地仓库
    git remote add
    创建仓库后可以关联空的远程仓库
    git push -u
    将本地创建的仓库推送至远程仓库,u即upstream,在没关联远程仓库的分支时可以用这个

  3. 克隆远程仓库
    git clone

  4. 工作区提交至暂存区
    git add <filename>
    git rm <filename>
    暂存区增加、删除,命令后面加的是工作区的文件路径
    git status
    查看状态

  5. 暂存区提交至仓库
    git commit

  6. 撤销本地仓库至上一版本
    git reset --soft HEAD^
    git reset --mixed(默认) HEAD^
    同时撤销暂存区的
    git reset --hard HEAD^
    同时撤销工作区的
    git log
    查看提交日志
    git reflog
    查看命令日志

  7. 撤销暂存区修改
    git reset [--mixed] [HEAD]
    git diff
    比较工作区与暂存区
    git diff --cached
    对比暂存区与本地仓库
    git diff HEAD
    对比工作区与本地仓库
    对于工作区文件的修改,IntelliJ IDEA处理commit操作时自动将工作区的变更加到暂存区后commit
    reset还可以跨分支操作,相当于把原来的分支删除并把HEAD移动到参数指定的版本

  8. 撤销工作区修改
    git checkout HEAD <filename>
    会同时对暂存区恢复
    git checkout <filename>
    从暂存区恢复到工作区
    git checkout master~1
    HEAD移动到master前一版本
    非文件的git checkout基本上就是移动HEAD了,同时更新暂存区与工作区
    对非文件的操作(如checkout到另外的分支等),如果工作区的修改有冲突,则checkout失败,否则保留工作区的修改并移动HEAD
    checkout master~1等把指向某一历史会使HEAD处于游离状态(匿名分支)
    git checkout -b new
    可以在匿名分支上创建一个分支,以此进行跟踪

  9. 创建分支
    git branch dev

  10. 切换分支
    git switch dev(git checkout dev)
    git switch -c dev(git checkout -b dev)
    创建并切换分支
    git stash
    工作区和暂存区是所有分支共享,切换前可以先保存这个分支的现场
    git stash list
    查看
    git stash apply
    恢复
    git stash drop
    删除
    git stash pop
    恢复并删除

  11. 查看分支
    git branch

  12. 合并分支
    git merge dev
    工作区、暂存区任一地方有与参数中的分支有冲突都会造成merge失败
    两分支已commit部分有冲突的话需要解决冲突
    git merge --abort
    取消合并

  13. 更新远程仓库信息
    git fetch

  14. 按提交追平
    git cherry-pick

  15. 抓取远程分支
    git pull origin/dev dev
    等同于git fetch + git merge

  16. 推送分支
    git push origin dev

一圈搞下来,感觉还是挺复杂的,特别是工作区与本地仓库中间还有暂存区,相当于多了暂存区的一些操作。