文章目录
- 前言
- 一、配置 Git
- 1.1 忽略特殊文件
- 1.2 给命令配置别名
- 二、标签管理
- 2.1 理解标签
- 2.2 创建标签
- 2.3 操作标签
- 总结
前言
一、配置 Git
1.1 忽略特殊文件
在日常开发中,我们有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让Git知道呢?
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件了。
注意:不需要从头写.gitignore文件,gitee在创建仓库时就可以为我们生成,不过需要我们主动勾选一下:
图示示例:
如果当时没有选择这个选择,在工作区创建一个也是可以的。无论哪种方式,最终都可以得到一个完整的.gitignore文件,
举例说明:
例如我们想忽略以.so和.ini结尾所有文件,.gitignore的内容如下:
代码举例:
# 省略选择模本的内容...# My configurations:*.ini*.so在 .gitignore 文件中也可以指定某个确定的文件。
最后一步就是把 .gitignore 也提交到远端,就完成了:
代码示例:
hyb@139-159-150-152:~/git_teaching$ vim .gitignorehyb@139-159-150-152:~/git_teaching$ git add .hyb@139-159-150-152:~/git_teaching$ git commit -m"add .gitignore"[master 97811ab] add .gitignorefile changed, 3 insertions(+)create mode 100644 .gitignorehyb@139-159-150-152:~/git_teaching$ git push origin masterEnumerating objects: 4, done.Counting objects: 100% (4/4), done.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 362 bytes | 362.00 KiB/s, done.Total 3 (delta 0), reused 0 (delta 0)remote: Powered by GITEE.COM [GNK-6.4]To gitee.com:hyb91/git_teaching.git60e6b0a..97811ab master -> master
接着我们就来验证⼀下.gitignore文件的能力,在工作区新增两个文件 a.so b.ini。代码示例:hyb@139-159-150-152:~/git_teaching$ touch a.so b.inihyb@139-159-150-152:~/git_teaching$ git statusOn branch masterYour branch is up to date with 'origin/master'.nothing to commit, working tree clean
检验.gitignore的标准就是git status命令是不是说 working tree clean 。我们发现Git并没有提示在工作区中有文件新增,果然.gitignore生效了!
但有些时候,你就是想添加一个文件到Git,但由于这个文件被.gitignore忽略了,根本添加不了,那么可以用-f 强制添加:
代码示例:$ git add -f [filename]或者你发现,可能是.gitignore 写得有问题,需要找出来到底哪个规则写错了,比如说a.so文件是要被添加的,可以用git check-ignore命令检查:代码示例:hyb@139-159-150-152:~/git_teaching$ git check-ignore -v a.so.gitignore:3:*.so a.soGit 会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
还有些时候,当我们编写了规则排除了部分文件时,例如:
# 排除所有.开头的隐藏文件:.*但是我们发现.*这个规则把.gitignore也排除了。虽然可以用git add -f 强制添加进去,但有强迫症的童鞋还是希望不要破坏.gitignore规则,这个时候,可以添加一条例外规则:# 不排除.gitignore!.gitignore把指定文件排除在.gitignore|规则外的写法就是:!+文件名,所以,只需把例外文件添加进去即可。
1.2 给命令配置别名
在我们使用Git期间,有些命令敲的时候着实让人头疼(太长了。。),幸运的是,git支持对命令进行简化!!!
举个例子,将git status简化为 git st,对应的命令为:
1 $ git config --global alias.st status
--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
如果不加,那只针对当前的仓库起作用。
好了,现在敲git st看看效果:
代码示例:
hyb@139-159-150-152:~/git_teaching$ git stOn branch masterYour branch is up to date with 'origin/master'.nothing to commit, working tree clean
再来配置一个git last,让其显示最后一次提交信息:
$ git config --global alias.last ' log1"
这样,用git last就能显示最近一次的提交:
代码示例:
hyb@139-159-150-152:~/git_teaching$ git lastcommit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, origin/master,Author: hyb91 <2689241679@qq.com>Date: Fri May 12 17:27:06 2023 +0800add .gitignore
不过,我个人还是不推荐大家现在去使用他,等大家工作了,再去简化自己的工作吧,目前所有的命令都要手动完成,尽快适应Git。
二、标签管理
2.1 理解标签
标签tag,可以简单的理解为是对某次commit的一个标识,相当于起了一个别名。
例如,在项目发布某个版本的时候,针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。
这有什么用呢?
相较于难以记住的commit id , tag 很好的解决这个问题,因为tag一定要给一个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。
2.2 创建标签
在Git中打标签非常简单,
(1)首先,切换到需要打标签的分支上。
代码示例:
hyb@139-159-150-152:~/git_teaching$ git branch* master
(2)然后,敲命令git tag [name]就可以打一个新标签:
代码示例:1 hyb@139-159-150-152:~/git_teaching$ git tag v1.0
(3)可以用命令git tag查看所有标签:
代码示例:
hyb@139-159-150-152:~/git_teachings git tag2
v1.0
默认标签是打在最新提交的commit上的。那如何在指定的commit上打标签呢?
方法是找到历史提交的commit id,然后打上就可以了,
代码示例如下:
# 历史记录hyb@139-159-150-152:~/git_teaching$ git log --pretty=oneline --abbrev-commit97811ab (HEAD -> master, tag: v1.0, origin/master, origin/HEAD) add .gitignore60e6b0a update README.md.7ce3183 create file.txtc6ce3f0 Initial commit# 对 Initial commit 这次提交打标签hyb@139-159-150-152:~/git_teaching$ git tag v0.9 c6ce3f0hyb@139-159-150-152:~/git_teaching$ git tagv0.9v1.0
注意:标签不是按时间顺序列出,而是按字母排序的。可以用git show [tagname]查看标签信息。代码示例:hyb@139-159-150-152:~/git_teaching$ git show v1.0commit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, tag: v1.0, origAuthor: hyb91 <2689241679@qq.com>Date: Fri May 12 17:27:06 2023 +0800add .gitignorediff --git a/.gitignore b/.gitignore...
Git还提供可以创建带有说明的标签,用-a指定标签名,-m指定说明文字,
格式为:
git tag -a [name] -m "XXX" [commit_id]另外,打完标签之后,使用 tree .git命令 查看一下你的本地库有什么变化 ,肯定能帮助你理解!
2.3 操作标签
如果标签打错了,也可以删除:
代码示例:
hyb@139-159-150-152:~/git_teaching$ git tagv0.9v1.0hyb@139-159-150-152:~/git_teaching$ git tag -d v0.9Deleted tag 'v0.9' (was c6ce3f0)hyb@139-159-150-152:~/git_teaching$ git tagv1.0
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>
代码示例:
hyb@139-159-150-152:~/git_teaching$ git tagv1.0hyb@139-159-150-152:~/git_teaching$ git push origin v1.0Total 0 (delta 0), reused 0 (delta 0)remote: Powered by GITEE.COM [GNK-6.4]To gitee.com:hyb91/git_teaching.git* [new tag] v1.0 -> v1.0此时,查看远端码云,看到了标签已经被更新!完美!图示示例:
当然,如果你本地有很多标签,也可以一次性的全部推送到远端:
使用命令git push origin --tags
如果标签已经推送到远程,要删除远程标签就⿇烦⼀点,先从本地删除:代码示例:本地删除hyb@139-159-150-152:~/git_teaching$ git tagv1.0hyb@139-159-150-152:~/git_teaching$ git tag -d v1.0Deleted tag 'v1.0' (was 97811ab)然后,从远程删除。删除命令也是push,但是格式如下:代码示例:远程删除hyb@139-159-150-152:~/git_teaching$ git push origin :refs/tags/v1.0remote: Powered by GITEE.COM [GNK-6.4]To gitee.com:hyb91/git_teaching.git- [deleted] v1.0在码云上查看确实删除成功: