git三大分区介绍及git常用命令stash reset等

Git三大分区

  • Git是一个版本控制工具,能够帮助我们快捷地回滚代码,连接远程仓库后便可以和小伙伴们协作编写项目。
  • 在执行 git init之后会在本目录下生成.git隐藏文件夹,这个文件夹中的文件用于实现git的版本控制
  • git包含工作区、暂存区、版本库三大分区
    git三大分区介绍及git常用命令stash reset等_第1张图片
  1. 工作区:我们在.git文件夹所在目录下创建的所有文件都会先移交到工作区中,这里添加文件后的状态我们成为状态1
    git三大分区介绍及git常用命令stash reset等_第2张图片

  2. 暂存区:暂存区存放我们需要交给git进行管理的文件,如果我们需要把所有文件都交给git管理可以执行git add .,执行后变为状态2
    git三大分区介绍及git常用命令stash reset等_第3张图片

  3. 版本库:记录git的版本,只有添加到版本库的内容我们后续才能回滚(三个分区间也能回滚,但是只能本轮操作,创建文件 -> add -> commit可以看作一轮操作),一般执行git commit -m "xxxxxxxxx",执行后三个分区内容就统一了,变为状态3(图片笔误了QAQ)

    值得一提的是,在cmmit后git会为该版本内容创建一个永久快照,并将head指针指向这个快照
    我们对版本的控制本质上是移动head指针的位置,详见:关于head指针和分支
    git三大分区介绍及git常用命令stash reset等_第4张图片

常用指令

git diff分区内容比对

git diff                工作区 vs 暂存区
git diff head           工作区 vs 版本库
git diff –cached        暂存区 vs 版本库

git reset 版本切换

git reset xxxxxxx
xxxxxx为某一版本的id,将head指针指向该位置,回退到某一版本(HEAD~表示上一个版本,下面以HEAD为例)

git reset --soft HEAD~
回退到上个版本,但是暂存区内容不清除:状态3 -> 状态2

git reset –-mixed  HEAD~ 
回退到上个版本,同时清除暂存区内容:状态3 -> 状态1

git reset –-hard HEAD~ 
版本库->暂存区->工作区  三个区都清除上个版本提交:状态3 -> 全空

git stash

git stash会将当前工作区和暂存区内容存放到一个堆栈中,用于后续恢复当前工作目录。

什么时候使用stash

  • 当我们切换到分支时,我们暂存区和的内容就会全部清除,我们不想放弃修改的内容,但是想切换分支
  • 或者我们改到一半,想去干别的事情了,但是代码没改完还不想提交
  • 多个分支都需要做类似的修改
git stash
#能够将所有未提交的修改(工作区和暂存区)保存至堆栈中

git stash save "可以在这加注释"
#同stash

git stash list
#查看当前stash中的内容

git stash pop
#将stash中栈顶的内容放到当前分支的工作区和暂存区中,同时删除栈顶内容

git stash apply
#将stash中栈顶的内容放到当前分支的工作区和暂存区中,不删除栈顶内容,可以多次使用
#可以使用git stash apply + stash名字(如stash@{1})指定恢复哪个stash到当前的工作目录

git stash drop @{x}
#删除编号x所对于的栈中的内容

git stash clear
#清除栈中的全部内容

git stash show
#查看当前目录与栈顶内容的差别

git stash branch
#没用过,抄了段解释。。。原文链接:https://blog.csdn.net/stone_yw/article/details/80795669
从最新的stash创建分支。
应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
发生冲突时,需手动解决冲突。

其他常用命令(有空再细写)

  1. git init : 当前目录配置为git仓库,记录信息在隐藏的.git文件中

  2. git config —global user.name ly

    git config —global user.email [email protected]

  3. git add xx : 将xx文件添加到暂存区中

    • git add . : .将所有待加入文件加入暂存区
  4. git rm —cached xx : 将文件xx从暂存区中删除,不再管理该文件

    git restore —stage xxx :将文件xx从暂存区中删除,但会继续管理该文件

  5. git commit -m "备注信息": 提交暂存区内容到当前分支

  6. git status : 查看仓库状态

  7. git diff xx : 查看xx文件相对于当前分支的最新版本修改了哪些内容

  8. git log : 查看当前分支的所有版本

  9. get reflog : 查看HEAD指针的移动历史

  10. git reset —hard HEAD^或~ : 将代码库回滚到上一个版本

    • git reset —hard HEAD^^ : 回滚两个版本
    • get reset —hard HEAD~100 : 回滚100个版本
    • git reset —hard 版本号 : 回滚到特定版本
  11. git checkout - xx : 将xx文件尚未加入暂存区的修改全部撤销

    git restore xx git restore —stage xxx

    • git checkout branch_name :切换到branch_name分支
    • git checkout -b branch_name : 如果存在则切换,不存在创建并切换到branch_name分支
  12. git branch : 列出本地已存在的分支

    • git branch dev :创建本地分支,但不切换
    • git branch -m old new :给本地old分支重命名为new
    • git branch -a :列出本地及远程的分支
    • git branch -r :列出远程仓库的分支
    • git branch -vv :查看本地分支对应的远程分支
    • git branch -d branch_name : 删除本地仓库的branch_name分支,当部分未merge,会失败,使用-D强制
    • git branch —set-upstream-to=origin/branch_name local_branch :将远程的branch与本地local合并
  13. git remote add origin [email protected]:xxx | xxx.git : 将本地仓库关联到远程仓库

  14. git push : 将本地仓库上传到远程仓库

    • git push —set-upstream origin branch_name : 设置本地的origin分支对应的远程仓库branch分支
    • git push -d origin branch_name : 删除远程仓库的branch_name分支
  15. git pull: 将远程仓库的当前分支与本地仓库的当前分支合并

    • git pull origin branch_name : 将远程仓库的branch_name分支与本地的origin分支合并
  16. git stash:将工作区和暂存区中尚未提交的修改存入到栈中

    • git stash apply : 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
    • git stash drop : 删除栈顶存储的修改
    • git stash pop : 将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
  17. git merge branch_name:将分支branch_name合并到当前分支

你可能感兴趣的:(常用工具,git,java)