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

2、git进阶操作

2、git进阶操作

2.1.1 分支的创建

命令参数含义
git branch (git checkout -b)<new_branch> <old_branch>表示创建分支
-d <-D>删除分支 –d如果分支没有合并,git会提醒,-D强制删除
-a -v查看分支
-m重新命名分支
commit id从指定的commit id签出代码 git branch branch_name commit id
$ git push origin branch_name将本地分支推到远程
$ git push origin branch_name --delete 将远程分支删除
### 2.1.2 分支的合并
命令参数含义
git merge<branch_name>需要合并的分支
--abort终止合并,并回复文件
--continue继续合并
### 2.1.3 git rebase
命令参数含义
git rebase<branch_1> <branch_2>将branch_1上面的移动到branch_2
--abort终止rebase
--continue继续rebase
-i进入交互模式

2.2 git reset/revert/checkout撤销操作

命令参数含义
git reset--soft commit_id撤销到某个commit,不修改工作区和索引区内容
--mixed commit_id 撤销到某个commit,不修改工作区,修改索引区内容
--hard commit_id撤销到某个commit,并重置工作区和索引区内容
HEAD file_name撤销索引区指定的file_name
git revertcommit_id只撤销某个commit
git checkout-- . 撤销工作区所有文件

2.3 git remote远程服务器操作

创建仓库
git clone --bare DataStruct-Algorithm /F/datastruct-algorithm.git
git init --bare DataStruct_algorithm.git
命令参数含义
git remote-v查看详细的信息
show server_name查看主机的详细信息
add server_name web_site添加主机
rm server_name删除主机
rename old_server_name new_ server_name修改主机名

2.4 git log高级用法

命令参数含义
git log-n表示查看最近提交的n条记录
--graph显示当前分支提交记录以图形方式展示,后面—all 表示所有的分支
--date=short查看提交的时间
-p表示提交文件的修改了那些内容
file_name表示查看file_name文件的提交记录
commit_id..commit_id查看两个commit id之间的提交记录
--since=<date>自date以来的记录
--before=<date>表达date之前的记录
--after=<date>表示date之后的记录
--until=<date>表达直到date之后的记录
$ git log --since="2019-07-11" --until="2019-07-16" --date=short\n 表示2019-07-11~2019-07-16(不包括16号)之间提交的记录
--grep=<contents>根据提交的message内容进行匹配
--author=”author_name”根据作者名来搜索
--skip=n跳过前面的n条记录
--stat显示提交的文件
--left-right branch1…branch2比较两个分支的commit差异
命令参数含义
git reflog show查看当前分支的记录
--all查看所有分支的记录
在找到commit id之后可以使用cherry-pick branch等命令 reflog有个特点就是它只存在本地记录里面,并不会上传到服务器上

2.5 git diff/show查看提交详情

2.5.1 diff
命令参数含义
git diff不加参数尚未缓存的修改(还未执行add命令)
--cached已经缓存的修改
<branch_name1> <branch_name2> [file_name]比较两个分支file_name的差异
commit_id commit_id比较两个commit id 区别
3.5.2 show
命令参数含义
git show<commit_id>显示commit id提交修改的内容
<commit_id> <file_name>查看commit id 中对应的file_name修改内容
<tag_name>查看tag信息
### 2.6 git tag操作
命令参数含义
git tag-m注释信息
-f强制覆盖
-d删除
-l列出所有的tag
-n列出详细信息
$ git tag v2.0.0.0 –m “new version v2.0.0.0” $ git ls-remote --tags <server_name>查看远程tag $ git fetch <server_name> <tag_name> 拉取远程tag $ git push --delete <server_name> <tag_name> 删除远程的tag

注意在checkout tag的时候,如果我们在当前的tag上做了提交,就会造成一个游离的HEAD现象,这是个非常危险的操作,有可能会造成你的commit丢失问题。

2.7 git stash操作

stash的查看,增加,删除,对比,应用

命令参数含义
git stashsave [message]保存stash,并且有注释信息
show [stash] -p查看某个stash的详细信息
drop [stash]删除某个stash
pop将当前的第一个stash应用到当前的分支上
apply [stash]应用指定的stash,并且保存stash不变化
clear清空stash
list查看所有的stash

2.8 git blame操作

命令参数含义
git blame file_name查看这个文件都有谁提交的
file_name -L num1:num2查看这个文件从num1行到num2行都有谁提交的
file_name –L:function_name查看这个文件里面函数最后一次谁修改过
--colors-lines显示颜色标记
这个命令有时候可以结合grep使用,主要是为了精确查找信息
### 2.9 git patch 操作
1.先生成patch文件
$ git format-patch start_commit_id..end_commit_id
$ git format-patch –n3
2.可以事先检测在合并的时候是否存在冲突
$ git apply --check patch_file
3.合并patch文件
$ git am patch_file
4.撤销patch
$ git apply –R patch_file

2.10 git submodule管理大型项目的利剑

$ git init –bare test_submodule.git
$ git submodule add git@github.com:MingYueRuYa/cpp_inside_object.git
$ git submodule add git@github.com:MingYueRuYa/cpp_study.git
$ git commit –m “add submodule”
$ git push
拉取远程分支
$ git clone git@github.com:MingYueRuYa/test_submodule.git
$ git submodule init
$ git submodule update (git submodule update –init 将上面的两步合起来)
$ git submodule foreach git pull
$ git submodule foreach git submodule update
$ git rm -rf submodule_name (删除submodule)

在这里插入图片描述

相关文章:

  • mysql按年、季度、月,统计
  • 【go入门】表单
  • 聊聊Go语言的注释
  • Excel表中合并两个Sheet的方法?
  • ultrascale FPGA
  • 【linux】基本指令(中篇)
  • Redis常用操作及应用(一)
  • Linux学习教程(第八章 Linux用户和用户组管理)二
  • Mac M1 安装Docker打包arm64的python项目的镜像包
  • hdlbits系列verilog解答(exams/m2014_q4f)-47
  • 在 Go 中使用 Protocol Buffers
  • C++初识类和对象
  • 文本转语音:微软语音合成标记语言 (SSML) 文本结构和事件
  • web前端之vue和echarts的堆叠柱状图顶部显示总数、鼠标悬浮工具提示、设置图例的显示与隐藏、label、legend、tooltip
  • YOLOv5 分类模型 预处理 OpenCV实现
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • express.js的介绍及使用
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Mysql数据库的条件查询语句
  • Python学习笔记 字符串拼接
  • springboot_database项目介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 仿天猫超市收藏抛物线动画工具库
  • 日剧·日综资源集合(建议收藏)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 软件开发学习的5大技巧,你知道吗?
  • 深度解析利用ES6进行Promise封装总结
  • 使用putty远程连接linux
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​人工智能书单(数学基础篇)
  • # include “ “ 和 # include < >两者的区别
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %check_box% in rails :coditions={:has_many , :through}
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (生成器)yield与(迭代器)generator
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (四)linux文件内容查看
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)appium-desktop定位元素原理
  • (原創) 物件導向與老子思想 (OO)
  • (转)socket Aio demo
  • ./configure,make,make install的作用
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net Signalr 使用笔记
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net 访问电子邮箱-LumiSoft.Net,好用