【linux命令讲解大全】015 .Git:分布式版本控制系统的先驱和常用命令清单(四)

文章目录

  • 分支(Branch)
    • 删除分支
    • 提交分支
    • 拉取分支
    • 分支合并
    • 分支重命名
    • 查看分支
    • 新建分支
    • 连接分支
    • 分支切换
    • 远端操作
  • Submodule
    • 克隆项目同时克隆Submodule
    • 克隆项目后手动克隆子模块
    • 删除文件
  • Remote
  • 标签(Tag)
  • 日志(Log)
  • 从零学 `python`

分支(Branch)

删除分支

  • 删除远程分支:
git push origin :branchName  # 删除远程分支  
git push origin --delete new # 删除远程分支new   
  • 删除本地分支:
git branch -d branchName     # 删除本地分支,强制删除用-D  
git branch -d test      # 删除本地test分支   
git branch -D test      # 强制删除本地test分支   
git remote prune origin # 远程删除了,本地还能看到远程存在,这条命令删除远程不存在的分支

提交分支

将本地分支提交到远程主机中:

git push -u origin branchName # 提交分支到远程origin主机中  

拉取分支

当远程分支已被删除,但本地仍存在同名分支时,使用以下命令自动清理:

git fetch -p #拉取远程分支时,自动清理 远程分支已删除,本地还存在的对应同名分支。

分支合并

将分支合并到当前分支:

git merge branchName      # 合并分支 - 将分支branchName和当前所在分支合并   
git merge origin/master   # 在本地分支上合并远程分支。   
git rebase origin/master  # 在本地分支上合并远程分支。   
git merge test            # 将test分支合并到当前分支   

分支重命名

重命名分支:

git branch -m old new #重命名分支

查看分支

  • 列出本地分支:
git branch      # 列出本地分支   
  • 列出远程分支:
git branch -r   # 列出远端分支   
  • 列出所有分支:
git branch -a   # 列出所有分支   
  • 查看各个分支最后一个提交对象的信息:
git branch -v   # 查看各个分支最后一个提交对象的信息   
  • 查看已经合并到当前分支的分支:
git branch --merged      # 查看已经合并到当前分支的分支   
  • 查看未合并到当前分支的分支:
git branch --no-merged   # 查看为合并到当前分支的分支   
  • 查看remote地址和远程分支:
git remote show origin  # 可以查看remote地址,远程分支

新建分支

git branch test # 新建test分支  
git branch newBranch 3defc69 # 指定哈希3defc69,新建分支名字为newBranch
git checkout -b newBranch origin/master # 取回远程主机的更新以后,在它的基础上创建一个新的分支  
git checkout -b newBranch 3defc69 # 以哈希值3defc69,新建newBranch分支,并切换到该分支

连接分支

建立本地分支与远程分支之间的链接:

git branch --set-upstream dev origin/dev     # 将本地dev分支与远程dev分支之间建立链接  
git branch --set-upstream master origin/next # 手动建立追踪关系  

分支切换

切换分支:

git checkout test     # 切换到test分支   
git checkout -b test  # 新建+切换到test分支   
git checkout -b test dev # 基于dev新建test分支,并切换   

远端操作

git fetch <远程主机名> <分支名>   # fetch取回所有分支(branch)的更新  
git fetch origin remotebranch[:localbranch]   #  从远端拉去分支[到本地指定分支]   
git merge origin/branch   # 合并远端上指定分支   
git pull origin remotebranch:localbranch  #  拉去远端分支到本地分支   
git push origin branch    # 将当前分支,推送到远端上指定分支   
git push origin localbranch:remotebranch  # 推送本地指定分支,到远端上指定分支   
git push origin :remotebranch   # 删除远端指定分支   
git checkout -b [--track] test origin/dev # 基于远端dev分支,新建本地test分支[同时设置跟踪]  

Submodule

克隆项目同时克隆Submodule

git clone https://github.com/jaywcjlove/handbook.git --depth=1 --recurse-submodules

克隆项目后手动克隆子模块

git submodule add --force '仓库地址' '路径'
# 其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。
# 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)
  • 初始化子模块:
git submodule init # 初始化submodule
  • 更新子模块:
git submodule update # 更新submodule(必须在根目录执行命令)
  • 下载带有submodule的工程:
git submodule update --init --recursive  # 下载的工程带有submodule
  • 子模块含有其他子模块时一次更新:
git submodule foreach git pull  # submodule 里有其他的 submodule 一次更新
  • 子模块更新:
git submodule foreach git pull origin master # submodule更新
  • 给所有子模块初始化并更新:
git submodule foreach --recursive git submodule init
git submodule foreach --recursive git submodule update

删除文件

git rm -rf node_modules/

Remote

Git是一个分布式代码管理工具,因此可以支持多个仓库。在Git中,服务器上的仓库在本地被称为远程(Remote)。个人开发时,可能用到多个远程仓库。

  • 添加远程仓库:
git remote add origin1 [email protected]:yanhaijing/data.js.git  
  • 显示全部远程仓库:
git remote    # 显示全部源  
  • 显示全部远程仓库(包含详细信息):
git remote -v # 显示全部源+详细信息  
  • 重命名远程仓库:
git remote rename origin1 origin2 # 重命名  
  • 删除远程仓库:
git remote rm origin    # 删除  
  • 查看指定远程仓库的全部信息:
git remote show origin  # 查看指定源的全部信息  

标签(Tag)

在开发到一定阶段时,给代码打标签是非常有用的。

  • 新建带注释的标签:
git tag -a v0.1 -m 'my version 1.4' # 新建带注释标签   
  • 一次性推送所有标签:
git push origin --tags              # 一次性推送所有分支 
  • 推送单个标签到origin源:
git push origin v1.5                # 推送单个tag到orgin源上 
  • 验证标签,验证已经签署的标签:
git tag -v v1.4.2.1                 # 验证标签,验证已经签署的标签
  • 查看现有标签:
git tag        # 列出现有标签   
  • 新建标签:
git tag v0gi.1 # 新建标签   
  • 切换到标签:
git checkout tagname   # 切换到标签       
  • 删除标签:
git tag -d v0.1 # 删除标签   
  • 删除远程标签:
git push origin :refs/tags/v0.1 # 删除远程标签   
  • 获取远程所有内容(包括标签):
git pull --all # 获取远程所有内容包括tag  
  • 查看本地版本信息:
git --git-dir='<绝对地址>/.git' describe --tags HEAD # 查看本地版本信息  

日志(Log)

  • 显示单行提交日志:
git config format.pretty oneline  #显示历史记录时,每个提交的信息只显示一行   
  • 彩色的Git输出:
git config color.ui true #彩色的 git 输出   
  • 查看最近的提交日志:
git log #查看最近的提交日志   
  • 单行显示提交日志:
git log --pretty=oneline #单行显示提交日志   
  • 使用图形展示提交日志:
git log --graph --pretty=oneline --abbrev-commit   
  • 显示第几条日志(倒数):
git log -num #显示第几条log(倒数)   
  • 查看所有分支的所有操作记录:
git reflog #查看所有分支的所有操作记录   
  • 显示一天内的提交日志;可以使用各种时间格式,例如特定日期(“2008-01-15”)或多久以前(“2 years 1 day 3 minutes ago”):
git log --since=1.day #一天内的提交;你可以给出各种时间格式,比如说具体的某一天(“2008-01-15”),或者是多久以前(“2 years 1 day 3 minutes ago”)。   
  • 查看自己的提交日志:
git log --pretty="%h - %s" --author=自己的名字 #查看自己的日志   
  • 展开两次更新,显示每次提交的内容差异:
git log -p -2 #展开两次更新显示每次提交的内容差异   
  • 快速浏览其他协作者提交的更新:
git log --stat #要快速浏览其他协作者提交的更新都作了哪些改动   
  • 定制显示记录格式:
git log --pretty=format:"%h - %an, %ar : %s"#定制要显示的记录格式   
  • 拓扑顺序展示提交日志:
git log --pretty=format:'%h : %s' --date-order --graph # 拓扑顺序展示   
  • 显示日期(YYYY-MM-DD):
git log --pretty=format:'%h : %s - %ad' --date=short #日期YYYY-MM-DD显示  
  • 只显示commit:
git log  HEAD --pretty=format:%s # 只显示commit   
  • 写入全局配置,设置日期格式为YYYY-MM-DD:
git config --global format.pretty '%h : %s - %ad' --date=short #日期YYYY-MM-DD显示 写入全局配置
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

以上表格列出了在Git中可用的Pretty Formats选项及其说明。您可以根据需要选择相应的选项来自定义log输出格式,例如展示作者、提交日期和提交说明等信息。

从零学 python

【从零学习python 】92.使用Python的requests库发送HTTP请求和处理响应
【从零学习python 】91. 使用装饰器和字典管理请求路径的简洁Web应用
【从零学习python 】93.使用字典管理请求路径
【从零学习python 】89. 使用WSGI搭建简单高效的Web服务器
【从零学习python 】88. WSGI接口详解:实现简单高效的Web开发
【从零学习python 】87. 手动搭建HTTP服务器的Python实现及多线程并发处理
【从零学习python 】86. 深入了解HTTP协议及其在浏览器和服务器通信中的作用
【从零学习python 】85.Python进程池的并行计算技术应用
【从零学习python 】84.深入理解线程和进程
【从零学习python 】83. Python多进程编程与进程池的使用
【从零学习python 】82. 基于多线程的聊天程序实现
【从零学习python 】81.Python多线程通信与队列的应用
【从零学习python 】80.线程访问全局变量与线程安全问题
【从零学习python 】79. 线程访问全局变量与线程安全问题
【从零学习python 】78. 文件下载案例
【从零学习python 】77. TCP服务端编程及注意事项
【从零学习python 】76.服务器与客户端:网络通信的关键组成部分
【从零学习python 】75. TCP协议:可靠的面向连接的传输层通信协议
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
【从零学习python 】73. UDP网络程序-发送数据
【从零学习python 】72. 深入理解Socket通信及创建套接字的方法
【从零学习python 】71. 网络端口及其作用
【从零学习python 】70.网络通信方式及其应用:从直接通信到路由器连接多个网络
【从零学习python 】69. 网络通信及IP地址分类解析
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
【从零学习python 】67.Python中的re模块:正则替换与高级匹配技术
【从零学习python 】66.深入了解正则表达式:模式匹配与文本处理的利器
【从零学习python 】65. Python正则表达式修饰符及其应用详解
【从零学习python 】64. Python正则表达式中re.compile方法的使用详解
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
【从零学习python 】62. Python正则表达式:强大的字符串匹配工具
【从零学习python 】61.Python中的property属性详解和应用示例
【从零学习python 】60.探索生成器:迭代的灵活利器
【从零学习python 】59.迭代器:优化数据遍历的高效工具
【从零学习python 】58.Python中的自定义异常及引发异常的方法
【从零学习python 】57.Python中使用with关键字正确关闭资源
【从零学习python 】56. 异常处理在程序设计中的重要性与应用
【从零学习python 】55.Python中的序列化和反序列化,JSON与pickle模块的应用
【从零学习python 】54. 内存中写入数据
【从零学习python 】53. CSV文件和Python的CSV模块
【从零学习python 】52.文件的读写 - Python文件操作指南
【从零学习python 】51.文件的打开与关闭及其在Python中的应用
【从零学习python 】49. Python中对象相关的内置函数及其用法
【从零学习python 】48.Python中的继承与多继承详解
【从零学习python 】47. 面向对象编程中的继承概念及基本使用
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
【从零学习python 】45.Python中的类方法和静态方法
【从零学习python 】44.面向对象编程中的私有属性和方法
【从零学习python 】43. Python面向对象编程中的实例属性和类属性
【从零学习python 】42.Python中的内置属性和方法
【从零学习python 】41.python魔法方法(二)
【从零学习python 】40.python魔法方法(一)
【从零学习python 】39.面向对象基本语法及应用示例
【从零学习python 】38.Python包的使用及导入方式
【从零学习python 】37.Python自定义模块的使用和注意事项
【从零学习python 】36.Python中使用pip进行第三方包管理的方法与技巧
【从零学习python 】35. Python常见系统模块及其用法
【从零学习python 】34.Python模块的导入和使用方法详解
【从零学习python 】33.装饰器的作用(二)
【从零学习python 】32.装饰器的作用(一)
【从零学习python 】31.深入理解Python中的高阶函数和闭包
【从零学习python 】30.深入理解递归函数和匿名函数
【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法
【从零学习python 】28. Python中的局部变量和全局变量
【从零学习python 】27. Python 函数的使用及嵌套调用
【从零学习python 】25.函数:提高代码编写效率的利器
【从零学习python 】24. Python中的字符串操作与遍历方法
【从零学习python 】23. Python中集合(set)的使用方法和常见操作
【从零学习python 】22. Python中的字典的增删改查及字典的变量
【从零学习python 】21.Python中的元组与字典
【从零学习python 】20. Python列表操作技巧及实例
【从零学习python 】19. 循环遍历列表和列表嵌套的应用
【从零学习python 】18. Python列表的基本操作详解(一)
【从零学习python 】17. Python字符串的format方法(二)
【从零学习python 】16. Python字符串的format方法(一)
【从零学习python 】15.深入了解字符串及字符集编码
【从零学习python 】14.Python字符串常见操作(二)
【从零学习python 】13.Python字符串常见操作(一)
【从零学习python 】12.Python字符串操作与应用
【从零学习python 】11.Python循环语句和控制流程
【从零学习python 】10.Python条件语句和if嵌套详解
【从零学习python 】09.Python 中的条件判断语句
【从零学习python 】08.Python了解位运算符, 运算符优先级
【从零学习python 】07.Python运算符详解:赋值、比较和逻辑运算符
【从零学习python 】06. Python中运用算数运算符进行计算和字符串拼接
【从零学习python 】05. Python中的输出和输入
【从零学习python 】04. Python编程基础:变量、数据类型与标识符
【从零学习python 】03. Python交互式编程及注释详解
【从零学习python 】02. 开发工具介绍
【从零学习python 】01. 安装配置python

你可能感兴趣的:(linux命令大全,linux,分布式,版本控制,分支管理,标签管理,远程操作,提交日志查看)