Git学习笔记(3)

五、标签管理

1.创建标签

为方便查找文件版本,可以对版本号打上标签,步骤如下:
Step1:切换到需要打标签的分支上

Step2:用命令git tag [-a] <tagname> [-m] [“解释性文字”] [版本id]新建一个标签,默认为HAED版本,也可以加上commit id指定任意版本。注:也可以加上选项-s ,用私钥签名一个标签(PGP签名),具体用法百度可查。

命令git show <tagname>可以看到说明文字,若加上了签名,则也可以看到签名信息

命令git tag可以查看所有标签

2.操作标签

1)如果标签打错了,可通过命令git tag -d <tagname>来将其删除。因为创建的标签都只存储在本地,不会自动推送到远程。所以打错的标签可在本地安全删除。
2)若要推送某个标签至远程,可使用命令git push origin <tagname>,或者使用命令git push origin --tags将所有尚未推送到远程的标签一次性推送至远程。
3)对于已经推送到远程的标签,如果想要删除,则需要先用git tag -d <tagname>将其在本地删除,然后通过命令git push origin :refs/tags/<tagname>将其从远程删除。


六、使用GitHub

1.GitHub中的一些功能解释

功能 解释
Gist 用于管理和发布一些没必要保存在仓库中的代码。
Popular repository 显示用户的公开仓库中受欢迎的仓库。
Contributions 显示每日用户对仓库的贡献程度。
Contibution activity 按时间顺序显示具体贡献活动的链接。
watch 相当于"订阅",点击后,在用户的公开活动中会显示该仓库的更新。
star 相当于"收藏",用户可以在该标记中找到被star过的仓库。
Fork 将原项目复制到了自己的仓库中,相当于在原有主分支上新建了一个分支。
code 显示该仓库中的文件列表。
issue 用于bug报告、功能添加、方向性讨论等。
pull request 代码的更改和讨论都可以在此进行。
pulse 显示该仓库最近的活动信息。
Graphs 以图表形式显示该仓库的各项指标。
commits 显示当前分支的提交历史。
branches 查看仓库的分支列表。
releases 显示仓库的tag列表。
contributors 显示对该仓库进行过提交的程序员名单。
raw 直接在浏览器中显示该文件的内容。
blame 按行显示最新提交的信息。
history 查看该文件的历史操作记录。

2.在GitHub中参与一个开源项目的步骤如下:

Step1:访问想要参与的项目主页,点击Fork则将该项目仓库复制到了自己的远程库下。注:在GitHub中,可以任意Fork开源仓库。
Step2:将复制得到的内容从自己的远程库中clone至本地仓库。注意:一定要从自己的账户下clone,只有这样才可以推送修改至远程,如果从作者账号clone,则没有推送修改的权限。
Step3:对其中的内容进行修改,工作完成后推送至自己的远程库。
Step4:如果希望作者接受你的修改,则可以在GitHub上发起一个pull request。如果对方接受,则修改就合并到该项目中,开源项目即得到了完善。


七、自定义Git

一些常用的Git自定义功能

1.显示不同的颜色

$ git config --global color.ui true

2.忽略特殊文件

忽略原则是:
1)操作系统自动生成的文件,比如缩略图等;
2)编译生成的中间文件、可执行文件等;
3)自己带有敏感信息的配置文件,如存放口令的配置文件等。

忽略方法是:修改git工作区根目录下的.gitignore文件,将要忽略的文件名填进去,Git就会自动将其忽略(该文件本身要提交到Git,对其做版本管理)。

检验是否忽略的方法是:使用命令git status查看是否提示working directory clean
命令git check-ignore可用来检查.gitignore文件,例如:

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

Git告诉我们,.gitignore文件的第三行规则忽略了该文件。

3.配置别名

1)配置命令

有些命令比较繁琐,可以用配置别名的方式对其做简化,例如:

$ git config --global alias.st status

执行以上命令后,敲git st则相当于git status
根据这种思想,我们可以给某些难于记忆的指令配置容易理解的别名,例如命令git reset HEAD file可以将暂存区的修改撤销掉,相当于一个unstage的操作,故可以对其配置一个unstage别名:

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

配置完成后,敲入git unstage test.py相当于命令git reset HEAD test.py

还有一些常用的配置:

$ git config --global alias.last 'log -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"

2)配置文件

上述命令中,--global是针对当前用户的所有仓库起作用的,若不加该参数,则只对当前仓库生效。
每个仓库的配置文件都位于.git/config文件中,可使用cat命令查看该文件。别名位于[alias]后面,要删除别名,直接将对应行删掉即可。(注:当前用户的Git配置文件放在用户主目录下的隐藏文件.gitconfig中。)
若要用命令删除一个已定义的别名,可采用

$ git config --global --unset alias.xxx

删除别名为xxx的修改。

4.搭建Git服务器

如果不想公开源代码,又不愿意为GitHub私有仓库付费,可以选择自己搭建一台Git服务器作为私有仓库使用。

1)搭建方法

Step1:安装git

$ sudo apt-get install git

Step2:创建一个git用户,来运行git服务

$ sudo adduser git

Step3:创建证书登录
收集所有需要登录的用户的公钥,也就是他们各自的id_rsa.pub文件,将所有公钥导入到/home/git/.ssh/authorized_keys文件中,一行一个。

Step4:初始化Git仓库
先选定一个目录作为Git仓库,假定为/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

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

$ sudo chown -R git:git sample.git

Step5:禁用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每次一登录就会自动退出。

Step6:clone远程仓库

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送方法类似于推送到GitHub。

2)管理公钥

如果团队很小,可以利用上述方法管理。如果团队较大,可以用Gitosis来管理公钥。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,630评论 9 163
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,676评论 1 17
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,941评论 3 27
  • 2017年12月6日上午10点30分,我们的父亲,一位兢兢业业为我国新闻事业辛勤工作了一辈子的老新闻工作者,在与心...
    我叫红景天阅读 373评论 0 1
  • 我不怕一个人面对这兵荒马乱的世界,我怕的是,有了你之后,我依然要活成刀枪不入的女汉子模样,自己拿刀、自己拿枪,防卫...
    黑丫说阅读 897评论 2 2