Git学习笔记(3)

五、标签管理

1.创建标签

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

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

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

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

2.操作标签

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


六、使用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来管理公钥。

你可能感兴趣的:(Git学习笔记(3))