【Git】分支,文件,Tag的常用命令及Log查看

本文详细介绍了Git的常用命令,包括获取项目、分支管理、文件操作、Tag使用以及Log查看。讲解了Git的Master、Hotfix、Develop、Release和Future等分支概念,强调了Git在版本控制中的重要性。此外,还对比了Git与其他版本管理软件的差异,如SVN,突出Git的分布式特性、内容完整性和分支管理优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


title: Git
tags: git,版本管理工具
grammar_cjkRuby: true

使用

获取项目

git clone 克隆远端项目仓库至本地

分支

  1. git branch 查看本地分支及当前所在分支
    -v 查看分支及最后一次提交内容
    -a 查看所有分支 [ 本地工作分区 + 远端仓库 ]

  2. git fetch 更新远端分支到本地

  3. git checkout branch_name 切换到本地已存在分支

  4. git checkout -b new_branch 以当前分支为基础创建分支
    PS : 等同于 git branch new_branch + git checkout new_branch

  5. git merge branch_name 分支合并

  6. git branch -d branch_name 分支删除 [未合并分支无法删除]
    -D 强制删除分支

  7. git push origin develop 推送分支至远端

  8. git push origin : develop 删除远端分支

文件操作

  1. git add 添加文件进入本地暂存区

  2. git commit -m ‘标注提交内容’

  3. git commit --amend 编辑最后一次提交的内容

  4. git commit -a -m ‘跳过提交暂存区’

  5. git stauts 查看当前当前工作区文件状态

  • -s 状态简览
  1. git diff 查看当前工作区文件变更
  • –cached 查看提交至暂存区的变更文件
  1. git rm index.php 删除工作区文件
  • -f 强制删除变更过的文件
  • -cached file_name 删除暂存区文件
  1. git mv a.file b.file 移动文件
  • PS : 等同于 mv a.file b.file + git rm a.file + git add b.file
  1. git reset <->
    file_name 暂存区文件撤销提交
    hard 版本回滚

  2. git push origin branch_name 文件提交至远端分支仓库

  3. .gitignore 过滤

Tag

  1. git tag 查看所有标签

  2. git tag v1.0 -m ‘’ 创建轻量级标签

  • -a 附注标签
  • hard 后期打标签
  1. git push origin tag 标签共享
  • –tags 全部上传
  1. git tag -d tag 删除指定标签

  2. git push origin : v1.1 远端删除

  3. git checkout tag 切换版本

Log

git log

  • -p 展示每次提交内容变化

  • -number -2 展示条数

  • –name-only 显示文件名

  • –name-status 显示文件状态变更

  • –author 根据提交作者展示

  • –grep 根据提交内容搜索

  • –S 根据变更内容搜索

  • –stat 简略信息

  • –pretty=[oneline | full | short] 选择展示格式

  • –pretty=format:[]

    • %H 提交对象(commit)的完整哈希字串

    • %h 提交对象的简短哈希字串

    • %T 树对象(tree)的完整哈希字串

    • %t 树对象的简短哈希字串

    • %P 父对象(parent)的完整哈希字串

    • %p 父对象的简短哈希字串

    • %an 作者(author)的名字

    • %ae 作者的电子邮件地址

    • %ad 作者修订日期(可以用 --date= 选项定制格式)

    • %ar 作者修订日期,按多久以前的方式显示

    • %cn 提交者(committer)的名字

    • %ce 提交者的电子邮件地址

    • %cd 提交日期

    • %cr 提交日期,按多久以前的方式显示

    • %s 提交说明

Other

  • git --version 当前GIT版本

  • git --help 命令摘要
    –a | --all 全部命令列表
    command 查看某条命令的操作文档

  • git remote -v 查看远程仓库

  • git archive

分支的概念

Master

  • master分支只有一个。
  • master分支上的代码总是稳定的,随时可以发布出去。
  • 平时一般不在master分支上操作,当release分支和hotfix分支合并代码到master分支上时,master上代码才更新。
  • 当仓库创建时,master分支会自己创建

Hotfix

  • 当发现master分支出现一个需要紧急修复的bug,可以使用hotfix分支。
  • hotfix分支基于master分支,用来修复bug,当完成bug的修复工作后,需要将其merge回master分支和Develop分支。
  • 同一时间只有一个hotfix分支,其生命周期较短。

Develop

  • develop分支只有一个。
  • 新特性的开发是基于develop分支的,但不直接在develop分支上开发,特性的开发是在feature分支上进行。
  • 当develop分支上的特性足够多以至于可以进行新版本的发布时,可以创建release分支的。

Release

  • 当完成了特性的开发,并且将feature分支上的内容merge到develop分支上,这时可以开始着手准备新版本的发布,release分支正是作为发布而开设的分支。
  • release分支基于develop分支,在同一时间只有一个release分支,其生命周期较短,只是为了发布而使用。这意味着,在release分支上,只是进行较少代码修改,比如bug的修复,原有功能的完善等。不允许在release分支增加大的功能,因为这样会导致release分支的不稳定,不利于发布的进行。
  • 当release分支(例如,v.1.0)被创建出来后,develop分支可能正准备另一版本(例如,v.2.0),因此,当release分支merge回develop分支时,可能会出现冲突,需要手工解决冲突才能继续merge。

Future

  • 可以同时存在多个feature分支,新特性的开发正是在此分支上面。
  • 可以对每个新特性创建一个新的feature分支,当该特性开发完毕,将此feature分支合并到develop分支。

更多的理解:http://md.cxlf.com/htmls/public/git-flow的分支模型与及常用命令简介.html
GitFlow : http://www.cnblogs.com/cnblogsfans/p/5075073.html

其他

一位出生于1969.12.28的芬兰人。李纳斯·托沃兹(Linus Benedic Torvalds)linux之父,为了帮助管理Linux内核二开发的一个开源的分布式版本控制系统,可以有效处理从很小到非常大的项目版本管理。

类比

其他版本管理软件

  1. VSS (Visual SourceSafe)
    微软的版本控制工具,仅支持Windows操作系统。虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作

优:

  • 安装、配置、使用均较简单,很容易上手使用;
  • 权限划分可到文件夹级,有Read、Check-Out & Check-In、Add/Rename/Delete、Destroy四种权限级别。

劣:

  • 权限管理基于文件共享形式,只能从文件夹共享的权限设定对整个库文件夹的权限,而且必须要有可写权限;
  • 版本管理和分支管理只能靠人为的手工设置;
  • 安全性不高,基于文件系统共享实现对服务器的访问,需要共享存储目录,这样用户可以对VSS的文件夹执行删除操作。
  1. SVN(Subversion)
    其前身是CVS。SVN是根据CVS 的功能为基础来设计的,它除包括了CVS 的大多数特点外,还有一些新的功能,如:文件目录可以方便的改名、基于数据库的版本库、操作速度提升、权限管理更完善等。

优:

  • 管理方便,逻辑明确,操作简单,上手快。
  • 易于管理,集中式服务器更能保证安全性。
  • 代码一致性非常高。
  • 有良好的目录级权限控制系统。

劣:

  • 对服务器性能要求高,数据库容量经常暴增,体量大。
  • 必须联网。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。
  • 不适合开源开发。
  • 分支的管控方式不灵活

GIT & SVN

1.GIT是分布式的,SVN不是:

  • 这是GIT和其它非分布式的版本控制系统,GIT并不是目前第一个或唯一的分布式版本控制系统。但GIT在这方面做的更好。
  • GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chectout代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支。

2.GIT把内容按元数据方式存储,而SVN是按文件:

  • 所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果把.git目录的体积大小跟.svn比较,会发现它们差距很大。因为,.git目录是处于自身的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

3.GIT分支和SVN的分支不同:

  • 分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果想知道是否合并了一个分支,需要手工运行像这样的命令svn propget_svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。
  • 处理GIT的分支相当的简单。可以从同一个工作目录下快速的在几个分支间切换。很容易发现未被合并的分支,能简单而快捷的合并这些文件。

4.GIT的内容完整性要优于SVN:

  • GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

PS: 好好的样式导入全乱了,不让放PDF,不让上传HTML,不让传压缩文件 FK [中指] !
—— 非专业程序员的吐槽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值