Git 常用命令

Git 常用命令安装 git version 初始化配置 git config global user name damu git config global user email git config list 初始化仓库 git init 区域 工作区 暂存区 版本区

大家好,我是讯享网,很高兴认识大家。

在这里插入图片描述
讯享网

安装

git --version

初始化配置

git config --global user.name "damu"
git config --global user.email    
git config --list

初始化仓库

git init

区域

工作区

暂存区

版本区

对象

Git 对象

树对象

提交对象

C(新增)

在工作目录中新增文件
git status
git add ./
git commit -m "msg"    ;;

U(修改)

在工作目录中修改文件
git status
git add ./
git rm --cached namefile
git commit -m "msg"     

D(删除 & 重命名)

git rm 要删除的文件

git mv 老文件 新文件

git status git status git commit -m "msg"

git commit -m "msg"

R(查询)

git status : 查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪) git diff : 查看未暂存的修改 git diff --cache : 查看未提交的暂存 git log --oneline : 查看提交记录

分支

分支的本质其实就是一个提交对象!!!
HEAD:
   是一个指针 它默认指向master分支 切换分支时其实就是让HEAD指向不同的分支
   每次有新的提交时 HEAD都会带着当前指向的分支 一起往前移动
git  log --oneline --decorate --graph --all : 查看整个项目的分支图  
git branch : 查看分支列表
git branch -v: 查看分支指向的最新的提交
git branch name : 在当前提交对象上创建新的分支
git branch name commithash: 在指定的提交对象上创建新的分支
git checkout name :     切换分支
git branch -d name : 删除空的分支 删除已经被合并的分支
git branch -D name : 强制删除分支 

底层命令

git对象
   git hash-object -w fileUrl : 生成一个key(hash值):val(压缩后的文件内容)键值对存到.git/objects
tree对象
   git update-index --add --cacheinfo hash test.txt : 往暂存区添加一条记录(让git对象 对应 上文件名)存到.git/index
   git write-tree : 生成树对象存到.git/objects
commit对象
   echo 'first commit' | git commit-tree treehash : 生成一个提交对象存到.git/objects
对以上对象的查询
   git cat-file -p hash       : 拿对应对象的内容
   git cat-file -t hash       : 拿对应对象的类型

查看暂存区

git ls-files -s        

git分支本质

分支本质是一个提交对象,所有的分支都会有机会被HEAD所引用(HEAD一个时刻只会指向一个分支)
当我们有新的提交的时候 HEAD会携带当前持有的分支往前移动

git分支命令

创建分支            : git branch branchname
切换分支           : git checkout  branchname
创建&切换分支     : git checkout -b branchname
版本穿梭(时光机) :  git branch branchname commitHash  
普通删除分支      : git  branch -d branchname
强制删除分支      : git  branch -D branchname
合并分支         : git merge branchname
   快进合并 --> 不会产生冲突
   典型合并 --> 有机会产生冲突
   解决冲突 --> 打开冲突的文件 进行修改 add commit 

查看分支列表 : git branch
查看合并到当前分支的分支列表: git branch --merged
   一旦出现在这个列表中 就应该删除
查看没有合并到当前分支的分支列表: git branch --no-merged
   一旦出现在这个列表中 就应该观察一下是否需要合并

git分支的注意点

在切换的时候 一定要保证当前分支是干净的!!!
   允许切换分支:
       分支上所有的内容处于 已提交状态    
       (避免)分支上的内容是初始化创建 处于未跟踪状态
       (避免)分支上的内容是初始化创建 第一次处于已暂存状态
   不允许切分支:
        分支上所有的内容处于 已修改状态  或 第二次以后的已暂存状态  

       
在分支上的工作做到一半时 如果有切换分支的需求, 我们应该将现有的工作存储起来
   git stash : 会将当前分支上的工作推到一个栈中
   分支切换  进行其他工作 完成其他工作后 切回原分支
   git stash apply : 将栈顶的工作内容还原 但不让任何内容出栈
   git stash drop  : 取出栈顶的工作内容后 就应该将其删除(出栈)
   git stash pop   :      git stash apply +  git stash drop
   git stash list : 查看存储

后悔药

撤销工作目录的修改   :  git checkout -- filename
撤销暂存区的修改     :  git reset HEAD  filename
撤销提交             :  git commit --amend

reset三部曲

git reset --soft commithash    ---> 用commithash的内容重置HEAD内容
git reset [--mixed] commithash ---> 用commithash的内容重置HEAD内容 重置暂存区
git reset --hard commithash    ---> 用commithash的内容重置HEAD内容 重置暂存区 重置工作目录

路径reset

所有的路径reset都要省略第一步!!!
   第一步是重置HEAD内容  我们知道HEAD本质指向一个分支 分支的本质是一个提交对象
   提交对象 指向一个树对象 树对象又很有可能指向多个git对象 一个git对象代表一个文件!!!
   HEAD可以代表一系列文件的状态!!!!
git reset [--mixed] commithash filename  
    用commithash中filename的内容重置暂存区

checkout深入理解

git   checkout brancname  跟   git reset --hard commithash特别像
   共同点
       都需要重置 HEAD   暂存区   工作目录
   区别
        checkout对工作目录是安全的    reset --hard是强制覆盖
        checkout动HEAD时不会带着分支走而是切换分支
        reset --hard时是带着分支走
       
checkout + 路径
     git checkout commithash  filename  
          重置暂存区
          重置工作目录
     git checkout -- filename  
         重置工作目录  

小讯
上一篇 2025-02-19 22:02
下一篇 2025-03-13 15:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/123048.html