5.标签
发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。Git的标签虽然是版本库的快照,但其实它就是 指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
1.建立标签
$ git tag <tagName> #给当前的HEAD指向内容打标签
$ git tag -a -m <commit_id> #-a指定标签名,-m 说明文字
$ git tag #查看标签
$ git show <tagname> #查看标签信息
$ git tag -s v0.2 -m "" commit_id #通过-s用私钥签名一个标签
##签名采用PGP签名,我没有成功,暂时搁置
2.删除本地标签
$ git tag -d <tag name>
3.推送标签
$ git push origin v1.0
$ git push origin --tags #推送全部标签
4.删除远程标签
two steps.
1.$ git tag -d v0.9 #删除本地标签
2.$ git push origin :refs/tags/v0.9 #推送删除
6.github使用
我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。在GitHub出现以前,开源项目开源容易,但让广大人民群众参与进来比较困难,因为要参与,就要提交代码,而给每个想提交代码的群众都开一个账号那是不现实的,因此,群众也仅限于报个bug,即使能改掉bug,也只能把diff文件用邮件发过去,很不方便。
但是在GitHub上,利用Git极其强大的克隆和分支功能,人们群众真正可以第一次自由参与各种开源项目了。
如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:
$ git clone git@github.com:michaelliao/bootstrap.git
如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。
如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。
- 在GitHub上,可以任意Fork开源仓库;
- 自己拥有Fork后的仓库的读写权限;
- 可以推送pull request给官方仓库来贡献代码。
7.自定义git
例子:$ git config --global color.ui true #让Git显示颜色,会让命令输出看起来更醒目
1.忽略特殊文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files ...”,有强迫症的童鞋心里肯定不爽。好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
- 忽略某些文件时,需要编写.gitignore;
2.配置别名
$ git log -1 #查看最近1项的log,-2最近2项,以此类推$ git config --global alias.st status #git st ===>> git status
$ 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" # 非常好看
别名删除
目前,我还没接触到有相关的命令来删除别名。不过可以通过文件的方式删除,要知道别名保存的位置就需要知道这里的一些配置方式。git提供3级的配置方式。
--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
(1) --global
在用户根目录下找一个隐藏文件.gitconfig里面有所有别名配置,删掉即可
(2) --local
在对应的repository目录下的.git/config里有相应配置,删除即可。
(3) --system
/etc/gitconfig文件 包含了适用于系统所有用户和所有库的值。
覆盖关系 2>1>3
检查你的设置(Checking Your Settings)
如果你想检查你的设置,你可以使用 git config --list 命令来列出Git可以在该处找到的所有的设置:
$ git config --list
$ git config -l
你可能会看到一个关键字出现多次,这是因为Git从不同的文件中(例如:/etc/gitconfig, ~/.gitconfig ,以及 ./.git/config)读取相同的关键字。 在这种情况下,对每个唯一的关键字,Git使用最后的那个值。
你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:
$ git config user.name
3.你的标识(Your Identity)
当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:$ git config --global user.name ""
$ git config --global user.email
重申一遍,你只需要做一次这个设置。如果你传递了 --global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项。
要方便管理公钥,用Gitosis; https://github.com/res0nat0r/gitosis
要像SVN那样变态地控制权限,用Gitolite。 https://github.com/sitaramc/gitolite
这几次的笔记都是在学习廖雪峰老师的课程之后,摘录和总结的笔记。在这里十分感谢廖老师,这里是他的官方网站。很棒!
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Git的官方网站:http://git-scm.com
git cheat sheet
http://www.git-tower.com/blog/assets/2013-05-22-git-cheat-sheet/cheat-sheet-large01.png
git中文网站
http://gitbook.liuhui998.com/index.html