前面几篇分别介绍了如何从远程仓库拉数据下来或者推数据上去以及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的“必杀技特性”。
参考资料
本篇文章部分参考书籍PDF《Pro Git中文教程》资料,搜索微信公众号【CTP Plus】关注后,后台回复 2305 获取下载地址,我们一起学习。
输入才有输出,吸收才能吐纳。——码字不易