4、Git使用不完全指南:git查看提交历史、撤销操作、远程仓库、打标签、自动补全、Git命令别名使用技巧

前面几篇分别介绍了如何从远程仓库拉数据下来或者推数据上去以及git原理,git常用的命令大全,也基本应该能上手使用 Git 了。本章将介绍几个另外最基本的,也是最常用的 Git命令,以后绝大多数时间里用到的也就是这几个命令。展示如何让 Git 忽略某些文件,或是名称符合特定模式的文件;如何既快且容易地撤消犯下的小错误;如何浏览项目的更新历史,查看某两次更新之间的差异;

忽略某些文件

如果使用Git进行版本控制,需要一个gitignore文件来忽略所有不重要的、不应该在Git存储库中的文件。如Python中的虚拟环境、日志文件和所有的.pyc文件,这些都是临时生成的,任何有权访问代码的人都可以生成。因此,这些无需纳入 Git 管理的,也不希望它们总出现在未跟踪文件列表,没有必要将这些添加到存储库中。

可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。参考文章:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件

git查看提交历史

在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。

或 仅显示简要的增改行数统计

git log --stat

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。

每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。

git log 有许多选项可以帮助你搜寻感兴趣的提交,-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新

git log -p -2

在做代码审查,或者要快速浏览其他协作者提交的更新都作了哪些改动时,就可以用这个选项:

git log -U1 --word-diff

撤销commit操作

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

git commit --amend

此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。

远程仓库

项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据 推 送 到 远 程 仓 库。 实 现 这 个 任 务 的 命 令 很 简 单:git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:

git push origin master

注意:只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。

git tag打标签

tag也即标签,tag就是对某次commit的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次commit 起一个 v1.0.100 这样的标签来标识里程碑的意义。

tag 对应某一次 commit,是一个点,只能查看,不可移动。tag 实现标记的功能,是 Git 版本库的一个快照,指向某个 commit 的指针。branch 对应一系列 commit,是很多点连成的一根线,有一个 HEAD 指针,是可以依靠 HEAD 指针移动的。

tag 就像是一个里程碑,每一个标志一个点,branch 是一个新的征程一条线。tag 是静态的,branch 要向前开发。

打标签

git tag 版本标签 主要就是用于release的时候进行标记。

列出标签

在Git中列出已有的标签非常简单,只需要输入git tag(可带上可选的 -l 选项 --list)

git tag

如果没有tag则输出结果为空:

如果有tag则输出tag:

通过使用 git show 命令可以看到标签信息和与之对应的提交信息:

git show v1.0

切换到Tag

与切换分支命令相同,用git checkout [tagname]

本地创建tag并推送远程

git push origin --tags

含附注的标签

Git中创建附注标签十分简单。 最简单的方式是当你在运行tag命令时指定-a选项,指定标签名字即可,-m 选项指定了一条将会存储在标签中的信息(对应的标签说明)。如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。

git pull

git branch -a

git switch xxx

git checkout xxx

git branch

git log --pretty=oneline --abbrev-commit

git tag -a v0.0.1 -m "new tag"  # 含附注的标签

注意:此处需要双引号

git push origin --tags

git log --pretty=oneline --abbrev-commit

如果git push时弹出如下框,则需要参考前面的第二篇:在github中申请token,通过token进行提交的方法,将token填入输入框中即可

 

填入申请的token

提交成功

tag关联提交commit id

获取commitId

git log --pretty=oneline --abbrev-commit

创建tag

git tag -a 'tag名称(如v0.0.1)'  关联的commitId  -m 'tag说明备注'

tag 推送远程

git push origin 'tag名称'

删除本地tag

git tag -d 'tag名称'

删除远程tag

git push origin --delete 'tag名称'

在github上即可查看到推送到远程仓库的两个tag

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。

更多其它标签的使用请参考文末资料。

自动补全

如果你用的是 Bash shell,可以试试看 Git 提供的自动补全脚本。下载 Git 的源代码,进入 contrib/completion 目录,会看到一个 git-completion.bash 文件。将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点:cp git-completion.bash ~/.git-completion.bash),并把下面一行内容添加到你的 .bashrc 文件中:

source ~/.git-completion.bash

也可以为系统上所有用户都设置默认使用此脚本。Mac 上将此脚本复制到/opt/local/etc/bash_completion.d 目录中,Linux 上则复制到 /etc/bash_completion.d/目录中。这两处目录中的脚本,都会在 Bash 启动时自动加载。

如果在 Windows 上安装了 msysGit,默认使用的 Git Bash 就已经配好了这个自动补全脚本,可以直接使用。在输入 Git 命令的时候可以敲两次跳格键(Tab),就会看到列出所有匹配的可用命令建议:

此例中,键入 git co 然后连按两次 Tab 键,会看到两个相关的建议(命令)commit 和 config。继而输入 m<tab> 会自动完成 git commit 命令的输入。

Git命令别名

Git 并不会推断你输入的几个字符将会是哪条命令,不过如果想偷懒,少敲几个命令的字符,可以用 git config 为命令设置别名

git config --global alias.co checkout

git config --global alias.br branch

git config --global alias.ci commit

git config --global alias.st status

现在,如果要输入 git commit 只需键入 git ci 即可。而随着 Git 使用的深入,会有很多经常要用到的命令,遇到这种情况,不妨建个别名提高效率。

使用这种技术还可以创造出新的命令,比方说取消暂存文件时的输入比较繁琐,可以自己设置一下:

git config --global alias.unstage 'reset HEAD --'

这样一来,下面的两条命令完全等同

git unstage fileA

git reset HEAD fileA

接下来一篇将详细介绍git的“必杀技特性”。

参考资料

https://blog.csdn.net/zhouruifu2015/article/details/130071712https://blog.csdn.net/zhouruifu2015/article/details/130071712

https://blog.csdn.net/zhouruifu2015/article/details/130050960https://blog.csdn.net/zhouruifu2015/article/details/130050960

一、Django进阶:.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件_django gitignore_SteveRocket的博客-CSDN博客Django项目开发或改动完成后将本地代码提交到代码库(比如github)时,需要考虑哪些文件需要提交,哪些不需要提交。这是因为有些库文件(比如缓存文件),本地日志文件还有一些编译文件是不必要提交的。这时可以使用.gitingnore文件忽略不需要提交的文件。https://blog.csdn.net/zhouruifu2015/article/details/129645656

本篇文章部分参考书籍PDF《Pro Git中文教程》资料,搜索微信公众号【CTP Plus】关注后,后台回复 2305 获取下载地址,我们一起学习。

输入才有输出,吸收才能吐纳。——码字不易

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值