前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《Pro Git》 读书笔记1

《Pro Git》 读书笔记1

作者头像
elson
发布于 2020-01-02 08:10:45
发布于 2020-01-02 08:10:45
56300
代码可运行
举报
文章被收录于专栏:Elson's webElson's web
运行总次数:0
代码可运行

git config

1.config file 有以下几种
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object
2.有以下几种行为(action)指令,配合Config file location,用来增删改查不同的配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Action
    --get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --get-urlmatch        get value specific for the URL: section[.var] URL
    --replace-all         replace all matching variables: name value [value_regex]
    --add                 add a new variable: name value
    --unset               remove a variable: name [value-regex]
    --unset-all           remove all matches: name [value-regex]
    --rename-section      rename section: old-name new-name
    --remove-section      remove a section: name
    -l, --list            list all
    -e, --edit            open an editor
    --get-color           find the color configured: slot [default]
    --get-colorbool       find the color setting: slot [stdout-is-tty]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git --global --edit // 打开编辑器修改global配置文件
git --global --list // 列出该配置文件中的所有配置信息
3.设置key value的方式,--add可以省略,如果不加Config file location配置项的话,默认是保存到--local
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git config --add user.age 25
git config user.xxx "hehehe"
git config --global user.name "zhangfengqi"
4.为常用命令设置别名alias
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git config --global alias.co checkout
$ git config --global alias.last 'log -1 HEAD'

$ git config --global alias.unstage 'reset HEAD --'
// 下面两者等同
$ git unstage fileA
$ git reset HEAD -- fileA

想要执行外部命令,而不是一个Git子命令,需要在命令前面加入!符号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git config --global alias.visual '!gitk'

ignore

忽略某些后缀的文件,只需要修改.gitignore,将其添加进去

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim .gitignore
*.swp
*.a
!lib.a // 忽略所有.a后缀,但是lib.a除外!

文件 .gitignore 的格式规范如下:

  1. 所有空行或者以 # 开头的行都会被 Git 忽略。
  2. 可以使用标准的 glob 模式匹配。
  3. 匹配模式可以以(/)开头防止递归。
  4. 匹配模式可以以(/)结尾指定目录。
  5. 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号() 匹配零个或多个任意字符;abc 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 0-9 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

A collection of .gitignore templates

level 11 12 git rm

http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Removing-Files

  1. 将文件从暂存区移除,并且连带从硬盘工作目录中删除
  2. 如果仅仅用rm把文件从硬盘中删除,则在git中会出现未暂存记录,这时需要再执行git rm xxx 记录这次删除文件的操作,下一次提交时,该文件就不再纳入版本管理了。
  3. 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。
  4. 只想把文件从暂存区中删除(意味着不再让git跟踪),但不删除保留在硬盘中。 使用场景:当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rm --cached deleteme.rb // 保存working tree的文件,只从stage中移除,并不再追踪

level 13 14 git mv

1. 改名 git mv oldfile.txt newfile.txt

其实,运行 git mv 就相当于运行了下面三条命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mv README.md README
$ git rm README.md
$ git add README
2. 剪切文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Make a new folder named src, and move all of the .html files into this folder
git mv *.html src/

level 18 git push

https://git-scm.com/docs/git-push

  • git push –tags
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// git push origin HEAD
A handy way to push the current branch to the same name on the remote.

git commit –amend 修改最后一次提交

1. 修改最后一次的提交信息

直接输入git commit --amend,会被带入编辑器进行提交信息修改

2. 一次提交已完成,但有个文件忘提进去了

通过修改文件然后运行 git addgit rm 一个已追踪的文件,随后运行 git commit --amend拿走当前的暂存区域并使其做为新提交的快照。

注意顶 因为修正会改变提交的 SHA-1 校验和。 它类似于一个小的变基 - 如果已经推送了最后一次提交就不要修正它。

git status -s | –short

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示: README 文件在工作区被修改了但是还没有将修改后的文件放入暂存区,lib/simplegit.rb 文件被修改了并将修改后的文件放入了暂存区。 而 Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

git diff & git difftool

  1. 要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff 请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
  2. 若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff –cached 命令。(Git 1.6.1 及更高版本还允许使用 git diff –staged,效果是相同的,但更好记些。)
  3. git diff 查看各个区(工作区 暂存区 版本库)之间的差异 git diff 比较的是工作区和暂存区的差别 git diff –cached 比较的是暂存区和版本库的差别 git diff HEAD 可以查看工作区和版本库的差别 每次commit后,git diff –cached没有内容,是因为暂存区的内容已经更新到版本库中,因此暂存区和版本库中的内容无差别
  4. git diff的插件版本 git difftool --tool-help // 看你的系统支持哪些 Git Diff 插件 git config --global diff.tool vimdiff git difftool --edit vimdiff

git log 查看提交历史

1. 默认情况(不加任何参数)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit

按提交时间列出所有的更新,最近的更新排在最上面。加入参数-p可以看到每次提交的内容差异

2. 简单定制输出内容 --pretty=oneline | short | full | fuller
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git log --pretty=oneline // 只有commit号和comment
4df268a7256494563ff21feeb245a5fb52e42709 m_school bug fixed1
a1f8f9f33ffa4a39d99a0325e92acd73a48e11fa agent phone

$ git log --pretty=short // 没有提交时间,是merge的提交会有简明提示
commit 7e65491f3f742c3dd3befccd01f74d60d1000c19
Author: zuoerdong

    redian index, brief content trim space and substr to length 100

commit de7042ce4004d8207d3aa4f768d076402ccc972c
Merge: 4f0513c 448fdf7
Author: Wang Chunwei

git log --pretty=full // 作者和提交者都会列出来,还是没有提交时间
commit 4df268a7256494563ff21feeb245a5fb52e42709
Author: Zhang Fengqi <zhangfengqi@xxx.com>
Commit: Zhang Fengqi <zhangfengqi@xxx.com>

    m_school bug fixed1

$ git log --pretty=fuller // 多了时间
commit 4df268a7256494563ff21feeb245a5fb52e42709
Author:     Zhang Fengqi <zhangfengqi@xxx.com>
AuthorDate: Fri Jan 15 18:28:23 2016 +0800
Commit:     Zhang Fengqi <zhangfengqi@xxx.com>
CommitDate: Fri Jan 15 18:28:23 2016 +0800

    m_school bug fixed1
3. 高度定制输出内容 --pretty=format:"xxx"

alias.hist=log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short

选项

说明

%h

commit的短哈希,大写H则为完整哈希

%t

tree的短哈希,同上

%an

作者(author)名字

%ae

anthor email

%ad

作者修订日期(可以用 –date= 选项定制格式)

%ar

relative date 按多久以前的方式显示

%s

提交说明

%ar等同于--date=relative或者--relative-date

4. 限定输出长度和内容
  • 想获取多个限制条件的并集时,需要添加--all-match选项,否则满足任意一个条件的提交都会被匹配出来

选项

说明

example

-(n)

仅显示最近的n条提交

--since 或 --after

仅显示指定时间之后的提交

--since="2016-01-01" or "1 month 1 day 9 hours ago"

--until 或 --before

仅显示指定时间之前的提交

--anthor

指定作者

--commiter

指定提交者

--grep

匹配提交说明中的关键字

--grep=gulp --grep="initial commit"

--S

仅显示添加或移除了某个关键字的提交

--Sfunction_named

5. 其他选项
  • --decorate 命令查看各个分支当前所指的commit对象
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git log --oneline --decorate
4df268a (HEAD, origin/master, origin/HEAD, master) m_school bug fixed1
a1f8f9f agent phone

远程仓库

git tag

两种类型的标签:轻量标签(lightweight)与附注标签(annotated)

1. 附注标签

附注标签是存储在 Git 数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;通常建议创建附注标签。

使用-a,a for annotated.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4

// 查看标签的详细信息
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700

my version 1.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number
2.轻量标签

不保存任何相关信息,只是一个特定提交的引用,轻量标签本质上是将提交校验和存储到一个文件中,然后做个map对应。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 不需要任何其他参数,也不需要写comment
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

// 假设v1.4的commit号为ca82a6,下面两者等同,不会有额外的标签信息
$ git show v1.4
$ git show ca82a6
3.对已有的提交打tag
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git tag -a v1.2 9fceb02
4.推送标签到远程

默认情况下,git push 命令并不会传送标签到远程仓库服务器上。在创建完标签后你必须显式地推送标签到共享服务器上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git push origin v1.5
$ git push origin --tags // 推送所有不在远程仓库上的标签
5.在某个tag基础上建分支

git checkout -b [branchname] [tagname]

git reset & git checkout

https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86

1. 三个区

| 树 | 用途 | | ————- | ————- | | HEAD | 指向上一次提交的快照,下一次提交的父结点 | | Index(暂存区) | 预期的下一次提交的快照,add操作之后所放置的区域,当你运行git commit时 Git 看起来的样子| | working Directory | 硬盘本地工作目录,沙盒 |

  • git init执行之后只有工作目录有文件1.js(v1)
  • git add 1.js后现在暂存区和工作目录有1.js(v1),HEAD里没有
  • git commit之后,现在三个区中的文件才是一致的,1.js(v1)
  • 只有三个区中的文件集合都一致的时候,git status才会显示为空
2. git reset 三步原理
  1. dfd
  2. dsf

Git分支

1. 分支简介
  • Git的分支,其实本质上仅仅是指向commit对象的可变指针
  • git创建分支,其实是为你创建了一个可以移动的新的指针
  • 通过HEAD这个特殊指针,GIT获知当前在哪个分支上。HEAD可被看作为当前分支的别名。可以简单认为checkout到哪儿,HEAD移动到哪儿
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git branch dev
  HEAD -> master
             ↓
98ca9 <--- f30ab
             ↑
            dev

$ git checkout -b dev // 当新建并切换到dev分支时,HEAD才会移动
           master
             ↓
98ca9 <--- f30ab
             ↑
            dev <- HEAD
  • 如果分别在master和dev上进行commit,则历史记录就会开始分叉
  • 由于 Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效。 创建一个新分支就像是往一个文件中写入 41 个字节(40 个字符和 1 个换行符)

代码语言:txt
AI代码解释
复制
                 var gitalk = new Gitalk({                     clientID: '82f3fb6574634b43d203',                     clientSecret: '5790d9fdbfe9340d29810b694b3b2070a9a3b492',                     repo: 'zfengqi.github.io',                     owner: 'zfengqi',                     admin: ['zfengqi'],                     distractionFreeMode: true,                     id: window.location.pathname,                     });                     gitalk.render('gitalk-container');
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Ghost 博客 SSL 证书过期的解决办法
点击 高级 也没有进去的链接,而且页面地址前面写着”不安全“,证书显示也已经过期一个月了。而且我自己部署的 flask 服务也访问不了了。
Alan Lee
2021/12/07
8250
Ghost 博客 SSL 证书过期的解决办法
用acme.sh自动部署域名证书
目前使用量最大的免费SSL证书就是Let’s Encrypt,自2018-03开始,Let’s Encrypt官方发布上线了免费的SSL泛域名证书,目前通过DNS方式获取比较快,国内可以通过鹅云的DNSPod域名API或者猫云域名API自动签发Let’s Encrypt泛域名证书。因为鹅云使用的就是DNSPod域名,并且鹅云和DNSPod的账号是打通的,可以使用wx直接扫码登录。下文需要对鹅云和DNSPod进行操作,为了简化证书申请过程,需要提前安装acme.sh。acme.sh实现了acme协议,可以从Let’s Encrypt生成免费的证书,自动创建cron任务, 每天零点自动检测所有的证书,如果发现证书快过期了,需要更新,则acme.sh会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中。
摘繁华
2022/12/05
3.2K0
用acme.sh自动部署域名证书
使用acme.sh申请Let's Encrypt免费的SSL证书
acme.sh 实现了 acme 协议,可以从letsencrypt生成免费的证书。接下来将为大家介绍怎样申请Let's Encrypt通配符证书。
青阳
2021/09/15
5.8K4
acme.sh生成自动续费的免费SSL证书
acme.sh 实现了 acme 协议,可以从 letsencrypt 生成免费的证书。 一个完全用Shell(Unix shell)语言编写的ACME协议客户端,支持ACME v1和ACME v2,只需一个脚本即可生成发布,续订和自动安装SSL证书。
骤雨重山
2022/01/17
2.4K0
可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker 镜像仓库管理工具呢? 这里有一个简单好用的企业级 Registry 服务器 - Harbor,推荐在生产环境上使用。 Harbor 简介 Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry服务。 它以Docker公司开源的re
程序员鹏磊
2018/02/09
2.5K0
可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
使用 acme.sh 申请 SSL 证书
在申请 ssl 时,大部分平台都会存在或多或少的限制,比如国内平台的 亚洲诚信 ,该平台可以一次性申请双域名有效期为一年的证书,或者短期的通配符证书
阿龙w
2023/10/23
1.8K0
使用acme.sh生成免费的SSL证书
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
码客说
2021/03/02
4.9K0
正确使用 acme.sh, 让你的网站永久使用 ssl 证书,It's free!
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
用户1418987
2023/12/06
10.9K1
正确使用 acme.sh, 让你的网站永久使用 ssl 证书,It's free!
acme.sh 自动续签 SSL 证书
证书生成完成之后 acme.sh 会自动保存 API_ID 和 APK KEY,保存到 ~/.acme.sh/account.conf,下次再使用时,不需要再指定AccessKey了。
陳斯托洛夫斯記
2024/08/07
3920
40.9k star,acme.sh,ssl证书替换神器
假设你搞了博客,服务器买好了,域名买好了,服务开发好了,然后发现还需要证书,而且免费的3个月就要换?
大侠之运维
2025/01/23
2570
通过acme.sh开源工具申请泛解析SSL证书
2.Linux云服务器(本文系统某讯云的Centos7),测试公网IP为:150.158.130.33
星哥玩云
2022/06/28
2390
通过acme.sh开源工具申请泛解析SSL证书
告别焦虑:使用 acme 实现 ssl 免费证书到期自动更新
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/08/09
3.4K0
Ssl证书自动续签
生成的证书放在了/root/.acme.sh/plyx.site目录,因为这是 acme.sh 脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让 Nginx 的配置文件直接读取该目录下的证书文件。
mikelLam
2022/10/31
1.5K0
acme申请ssl证书
acme安装的时候就会自动添加crond计划任务来处理续约,当然也是可以手动来renew的。
行 者
2024/03/11
5830
如何使用acme.sh自动获取、更新Let’s Encrypt的SSL证书?
acme.sh实现了acme协议,可以从let's encrypt生成免费的ssl证书。本文主要记录使用dnspod api 自动申请ssl证书
房东的狗丶
2023/02/17
5.5K0
手把手教你免费申请支持通配符的 SSL 证书
得益于 Google 等大厂的消灭 HTTP 运动和 Let’s Encrypt 非盈利组织的努力,越来越多的站点开始迁移到 HTTPS,下图是 Let’s Encrypt 的统计数据。
iMike
2019/07/30
6.9K0
免费泛域名SSL证书
acme.sh 官方提供一个非常简单的一键安装脚本,老少皆宜。当然,安装这个工具对于是否在公网并没有任何要求,你可以选择在将要部署 SSL 证书的内网服务器中安装即可,请用非root用户全程执行命令。
chuchur
2024/11/21
1.7K0
什么?!你还不会申请免费的SSL证书??
突然发现我的网站没有SSL,作为一个职业前端人,我得有,而且我得会弄,之前上学那会儿有用宝塔一键部署过,感觉应该不会很复杂。
HoMeTown
2022/10/26
7260
HTTPS之acme.sh申请证书
Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。 Let's Encrypt由互联网安全研究小组(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。 用以实现新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。GitHub上有这一规范的草案,且提案的一个版本已作为一个Internet草案发布。 Let's Encrypt宣称这一过程将十分简单、自动化并且免费
惨绿少年
2018/12/19
4.8K0
SSL证书自动化-acme实战(Let’s Encrypt)
由于 HTTP 是明文传输,在使用 NextCloud 等服务时不够安全,需要配置 SSL 证书。不想让在被别人浏览的时候,出现莫名的广告[运营商劫持]。
用户10002156
2023/12/13
2.3K0
SSL证书自动化-acme实战(Let’s Encrypt)
推荐阅读
相关推荐
Ghost 博客 SSL 证书过期的解决办法
更多 >
LV.4
云杉网络售后
目录
  • git config
    • 1.config file 有以下几种
    • 2.有以下几种行为(action)指令,配合Config file location,用来增删改查不同的配置文件
    • 3.设置key value的方式,--add可以省略,如果不加Config file location配置项的话,默认是保存到--local
    • 4.为常用命令设置别名alias
  • ignore
  • level 11 12 git rm
  • level 13 14 git mv
    • 1. 改名 git mv oldfile.txt newfile.txt
    • 2. 剪切文件
  • level 18 git push
  • git commit –amend 修改最后一次提交
    • 1. 修改最后一次的提交信息
    • 2. 一次提交已完成,但有个文件忘提进去了
  • git status -s | –short
  • git diff & git difftool
  • git log 查看提交历史
    • 1. 默认情况(不加任何参数)
    • 2. 简单定制输出内容 --pretty=oneline | short | full | fuller
    • 3. 高度定制输出内容 --pretty=format:"xxx"
    • 4. 限定输出长度和内容
    • 5. 其他选项
  • 远程仓库
  • git tag
    • 1. 附注标签
    • 2.轻量标签
    • 3.对已有的提交打tag
    • 4.推送标签到远程
    • 5.在某个tag基础上建分支
  • git reset & git checkout
    • 1. 三个区
    • 2. git reset 三步原理
  • Git分支
    • 1. 分支简介
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档