🚫本教程参照廖雪峰的官方网站教程,请优先参考其网站。
Git优势
标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
📌Git有commit,为什么还要引入tag?“请把上周一的那个版本打包发布,commit号是6a5819e…”“一串乱七八糟的数字不好找!”如果换一个办法:“请把上周一的那个版本打包发布,版本号是v1.2”“好的,按照tag v1.2查找commit就行!”所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
创建标签
🧊使用命令git tag <name>
就可以打一个新标签,默认标签是打在最新提交的commit上的,给过去的commit打标签需要找到历史提交的commit id。
1 | $ git tag V2.0 |
🧊使用命令git show <tagname>
查看标签信息,标签的作用可以类似于commit id的作用。
1 | $ git tag show V2.0 |
还可以创建带有说明的标签,用-a
指定标签名,-m
指定说明文字:
操作标签
🧊使用命令git tag -d <tagname>
来删除标签
🧊使用命令git push origin <tagname>
来推送标签到远程
🧊使用命令git push origin --tags
来一次性推送所有标签到远程
忽略文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status
都会显示Untracked files ...
,有强迫症的童鞋心里肯定不爽。这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。不需要从头写.gitignore
文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:GitHub/gitignore
忽略原则
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
忽略规则
📌可以通过GitIgnore Online Generator在线生成.gitignore
文件并直接下载。
📌以下所有部分都是在.gitignore中文件写明的规则:
①假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini
文件,因此你需要忽略Windows自动生成的垃圾文件:
1 | # Windows: |
②继续忽略Python编译产生的.pyc
、.pyo
、dist
等文件或目录:
1 | # Python: |
③加上你自己定义的文件,最终得到一个完整的.gitignore
文件
1 | # My configurations: |
④例外规则
1 | # 排除所有.开头的隐藏文件: |
文件校验
最后一步就是把.gitignore
也提交到Git,就完成了!当然检验.gitignore
的标准是git status
命令是不是说working directory clean
。
🧊使用命令git add -f <filename>
强制添加被忽略的文件。
🧊使用命令git check-ignore
命令检查忽略规则。
配置别名
只需要敲一行命令,告诉Git,以后st
就表示status
,当然还有别的命令可以简写,很多人都用co
表示checkout
,ci
表示commit
,br
表示branch
:--global
参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
1 | $ git config --global alias.co checkout |
配置文件
配置Git的时候,加上--global
是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。配置文件放哪了?每个仓库的Git配置文件都放在.git/config
文件中:而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig
中:
例如:
1 | git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" |
软件平台
Github开源项目
在GitHub上,利用Git极其强大的克隆和分支功能,广大人民群众真正可以第一次自由参与各种开源项目了。如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:
1 | git clone git@github.com:zhoufenmianfan/bootstrap.git |
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git
克隆,因为没有权限,你将不能推送修改。Bootstrap的官方仓库twbs/bootstrap
、你在GitHub上克隆的仓库my/bootstrap
,以及你自己克隆到本地电脑的仓库,他们的关系就像下图显示的那样:
如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。
SourceTree
当我们对Git的提交、分支已经非常熟悉,可以熟练使用命令操作Git后,再使用GUI工具,就可以更高效。
下载安装
Git有很多图形界面工具,这里我们推荐SourceTree,它是由Atlassian开发的免费Git图形界面工具,可以操作任何Git库。
软件使用
第一次运行SourceTree时,SourceTree并不知道我们的Git库在哪。如果本地已经有了Git库,直接从资源管理器把文件夹拖拽到SourceTree上,就添加了一个本地Git库:
命令手册
📌手册来源于廖雪峰的官方网站:友情附赠Git Cheat Sheet,建议打印出来备用:Git Cheat Sheet