当前位置: 首页 > news >正文

Git总结

Git介绍

一、Git常用命令

在这里插入图片描述

添加、提交

git add  
将文件从工作区添加到暂存区,表示git开始追踪文件,如果不想让git追踪了,可以使用
git rm --cached <file>  取消文件追踪,仅仅只代表追踪取消,工作区文件还是照样存在
git mv
重命名文件,相当于mv +git rm + git add


如果add以后,我再改动了文件,想要撤销这次修改?就可以使用
git restore file
或者使用
git checkout -- file
回到上一次add以后的状态。注意这里不能直接删除文件

注意上述命名和git rm --cached file 的区别,前者是取消修改,后者是取消追踪!

如果我想取消add呢?就使用git提示的命令
git restore --staged <file>  注意与上述命令的区别


git commit -m "message"
将暂存区的文件提交到本地库,并添加注释,加-a可以自动添加到暂存区

git commit --amend
修改上一次提交的message

删除

删除仓库中所有没有跟踪的文件,清除编译生成的临时文件
git clean -i 表示以交互的形式删除文件
git clean -n 查看所有即将被删除的文件
git clean -f 表示强制删除
git clean -d 递归删除目录

历史记录、分支

git log
查看提交历史
--oneline:每个提交一行
--graph:显示分支结构
--stat:显示文件删改信息
-p:显示详细的修改内容

git reset --hard  <版本号>
可以将HEAD指针回退到之前的版本号

git checkout  git switch 
切换分支

git checkout -b <本地分支> <origin/远程分支>
将远程仓库里指定的分支拉取到本地,并在本地创建一个分支与指定远程仓库分支关联起来。并切换到新建的本地分支中

git branch -a -r -v 所有分支,远程分支,每个分支的最后一次提交

git branch --merged 查看哪些分支已经合并到当前分支,意味着可以-d删除

git branch --no-merged 查看哪些分支没有合并到当前分支,此时-d删除会出错,除非-D强制删除
git branch -vv
可以查看分支跟踪信息,以及是否领先、落后

在这里插入图片描述

git merge <分支test>
将test分支合并到当前分支,注意这里只会修改当前分支的内容。
比如有test和master两个分支,同时修改了txt文件,test修改一行,master修改第二行,虽然人看起来合并结果没有冲突,但是git确定不了,因此会提示冲突,此时人为解决冲突再合并即可。合并完成以后master分支就是同时修改了第一行和第二行的结果,而test分支不变。

git merge    git merge --squash的区别

在这里插入图片描述

暂存修改

使用场景:在dev分支开发的时候,需要去hotfix分支解决bug,但是不想放弃当前的修改,就可以使用git stash保存起来
值得注意的是,只有git add进去的文件,才能被stash追踪。
git stash == git stash save

查看堆栈里的修改
git stash show||list

应用堆栈中最新的修改,且不丢弃
git stash apply

应用堆栈中最新的修改,且丢弃
git stash pop

远程

git remote -v
查看当前所有远程库地址的别名

git remote add <别名> <远程地址>
给远程库地址添加别名
git push <别名> <分支名>
将分支推送到远程地址,没有别名也可以填地址,但是比较麻烦

实际上这个命令的完整命令是 
git push <远程主机名> <本地分支名>:<远程分支名>如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
比较常见的是
git push origin master
因为一般是git clone下来的,然后git默认把远端地址别名取为origin

git pull <远程主机名> <远程分支名>:<本地分支名>
git pull 和 git push 命令类似,当远程仓库存在改动时,为了保证本地和远程同步,就要使用git pull
事实上git pull相当于git fetch + git merge

git fetch命令格式与git push也类似。
eg: git fetch master:new_feature_branch表示从远程的master分支拉取更新到本地的new_feature_branch分支

变基

git rebase -i HEAD~2
背景是当前我有两个commit,时间上是a,b。然后可以使用该命令将b压缩到a上面。
fixup参数代表squash压缩。如果顺序反了会有错误提示,--abort这次rebase即可。

git checkout feature
git rebase master
将当前分支feature变基到master分支

origin的一些解释
git变基以及更多例子
git fetch的一些解释

二、Git内部原理

git核心组成部分:HEAD文件、index文件、objecs目录、refs目录。

HEAD文件指向目前被检出的分支
index文件保存暂存区信息
objects目录存储所有数据内容
refs目录存储指向数据(分支、远程仓库和标签等)的提交对象的指针
在这里插入图片描述

参考知乎动图

相关文章:

  • 2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序
  • WinDbg 远程调试遇到IP为:169.254.xx.xx 的处理
  • 【Linux】操作系统以及虚拟机的安装与配置
  • 容联七陌百度营销通BCP解决方案,让营销更精准
  • 【Linux】【驱动】设备树中设备节点的挂载
  • 电脑msvcp100.dll丢失了怎么办?详细的5个修复方法
  • Maven配置阿里云中央仓库settings.xml
  • 【软件教程】如何用C++检查TCP或UDP端口是否被占用
  • Arrays 中的 asList()方法
  • MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)
  • Android帧率监测与优化技巧
  • GRS不止局限于纺织行业
  • 安防监控项目---环境配置
  • 浅谈中国汽车充电桩行业市场状况及充电桩选型的介绍
  • pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现
  • RESTful 基础知识
  • 微信小程序——后台交互
  • 在Web中搜索(Searching the Web, ACM/ICPC Beijing 2004, UVa1597)rust解法
  • 【Zero to One系列】微服务Hystrix的熔断器集成
  • Pytorch - 数据增广
  • 国家发改委副主任谈民营经济促进法:以法治的稳定性增强发展的确定性
  • 公募基金解读“一揽子金融政策”:增量财政空间或打开,有助于维持A股活力
  • 成立6天的公司拍得江西第三大水库20年承包经营权,当地回应
  • 上海市委政法委召开会议传达学习总书记重要讲话精神
  • 李云泽:将加快出台与房地产发展新模式相适配的系列融资制度
  • 前瞻|中俄元首今年将首次面对面会晤,专家:国际变局中构建更坚韧的合作架构