您的位置:首页 > 其它

git学习笔记-4

2015-12-22 16:17 357 查看
40. 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

41. 

a. 切换到需要打标签的分支上 

git checkout master

b. git tag <name> 就打一个新标签

git tag v1.0

c. git tab 查看所有标签

42. 默认标签是打在最新提交的commit上的。如果想要打在历史提交的commit上

a. git log --pretty=oneline --abbrev-commit
//显示历史提交

b. git tab v0.9 9988888 //9988888时commit id

43. 标签是按字母排序的,可以用git show <tagname> 查看标签信息

git show v1.0

44. git tag -a v0.1 -m “versino 0.1 released” 56789
//创建带有说明的标签,-a指定标签名,-m指定说明文字

45. -s 用私钥签名一个标签

git tag -s -v0.2 -m “signed version 0.2 released” 724897

签名采用PGP签名,因此,首先必须安装gpg(GunPG),如果没有找到gpg,或者没有gpg密钥对,就会报错

46. git tab <name> 创建一个新标签 默认为HEAD 也可以指定一个commit id

git tag -a <tagname> -m “lalalala” 指定标签信息

git tag -s <tagname> -m “lalalala” 用PGP签名标签

git tag 查看所有标签

git show <tagname> 查看标签信息

47. 删除标签 git tag -d v0.1

因为创建的标签只存储在本地,不会自动推送到远程,所以,打错的标签可以在本地安全删除

48. git push origin <tagname> 推送某个标签到远程

git push origin --tags 一次性推送全部未推送到远程的本地标签

49. 如果标签已经推送到远程,要删除远程标签

a. 先从本地删除 git tag -d v0.9

b. 然后从远程删除 git push origin :refs/tags/v0.9

登录Github查看哪是否真的从远程库删除了标签

50. 

git push origin <tagname> 推送一个本地标签

git push origin --tags 推送所有未推送过的本地标签

git tag -d <tagname> 删除一个本地标签

git push origin :refs/tags/<tagname> 删除一个远程标签

51. 参与一个开源项目 在项目主页 点击fork就在自己账号下克隆了一个仓库,从自己的账号下clone。只能从自己的账号下clone才能推送修改。自己修复bug或者添加新功能后,向开源项目的官方发起一个pull request

52. 有时候,你必须把某些文件放在git工作目录里,但又不能提交它们,比如保存了数据库密码的配置文件等等。在git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,git就会自动忽略这些文件

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:a. 忽略操作系统自动生成的文件,如缩略图等;

b. 忽略编译生成的中间文件、可执行文件的功能。

c. 忽略带有敏感信息的配置文件,比如存放密码的配置文件

最后把.gitignore提交到git。检验.gitignore的标准是git status命令是不是说”working directory clean”

53. 自定义别名

git config --global alias.st status //以后st就代表status 命令

其他的一些别名:co == checkout

ci == commit

br == branch

54. 配置git的时候, 加上--global是针对当前用户起作用,不加就是针对当前仓库起作用

每个仓库的git配置文件都在.git/config文件中

当前用户的git配置文件在用户主目录下的.gitconfig中

55. 搭建git服务器

用Linux的机器,例如ubunte或者debian

a. 安装git

sudo apt-get install git 

b. 创建git用户,用来运行git服务

sudo adduser git

c. 创建证书登录

收集所有需要登录的用户的公钥,就是它们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个

d. 初始化git仓库

先选定一个目录作为git仓库, 在该目录下

sudo git init —-bare sample.git

git就会创建一个裸仓库,裸仓库没有工作去,因为服务器上的git仓库纯粹是为了共享,所以不让用户直接登录到服务器上改工作区,并且服务器上的git仓库通常以.git结尾。然后把owner改成git

sudo chown -R git:git sample.git

e. 禁用shell登录

出于安全考虑,第二步创建的git用户不允许登录shell,通过/etc/passwd文件完成。找到类似下面的一行

git:x:1001:1001:,,,:/home/git/bin/bash

改为 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出

f. 克隆远程仓库

现在就可以git clone克隆远程仓库,在各自的电脑运行了

56. 管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

57. 管理权限

因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: