作为程序员而言,GitHub 的使用频率可能并不亚于 Google。对于 Google 我们知道一些高级搜索(比如要找某一个站点的某个内容可以搜索:site:http://leetcode-cn.com two sum),那么在 GitHub 上,是否有类似的小技巧呢?
传统的搜索就是直接使用关键词,但是 GitHub 的搜索功能远远不止如此,还可以:
比如:
查找 Forks 在 100 到 200 之间 且 Star 数在 80到 100 之间的 Django 项目
假设我们的项目中有很多杂乱的文件,我们需要快速搜索一个文件(基于文件名),可以在仓库页面上按:"T",然后直接输入文件名,像这样:
例如:https://gist.github.com/n0vad3v/8b67a3417a3702063da0465f700eafcd#file-test-L5
这样就可以高亮起来了:
怎么样,是不是很好理解,同样的,如果需要分享一个仓库中的一行代码的话,可以直接点击左侧的行号,然后分享 URL,就像这样:
相信大家在开发的过程中都有用到函数定义跳转的功能,在 IDE 中,如果在函数调用的地方停留光标,可能会提示对应的函数定义,在 GitHub 中也是如此,对于一些仓库来说,我们可以直接查看对应的函数定义了,只需点击函数的调用位置即可。
此功能暂时只对于一小部分用户开放,且目前支持的语言有:
分支的基本操作
本地创建一个分支:
本地切换到一个新分支:
本地删除一个分支:
同时删除远程的(比如 GitHub 上)分支:
commit 签名
如何保证一个 commit 确实是本人作出的?在 GitHub 上协作的时候如果你拥有了一个人的 SSH Key,或者 GitHub 登录信息,即可以他的身份创建 commit,为了证明某一个 commit 确实是本人做出的,我们可以用自己的 PGP 私钥对 commit 进行签名。首先先确定自己的密钥 ID:
此时可以看到自己的密钥 ID,类似如下:
此时在自己的 Git 仓库中使用入下指令设置本仓库的签名密钥:
在每次 commit 的时候使用:
即可对 commit 进行签名。如果在 GitHub 设置中添加过自己的 PGP 公钥的话,此时 GitHub 上已经签名的 commit 可以看到一个标识。
保持同步
最开始接触 GitHub 的时候 Fork 其他人仓库后发现如果发送了一个 Pull Request 并被 Merge 之后,本地的资源仅仅是暂时和原始项目同步了,但是在原始项目有了新的 commit 之后就会与源项目“脱节”,然而这个时候 pull 操作也仅仅是针对自己 Fork 版本的从而导致同步失败。
此时我们一般对于原始仓库添加一个上游,操作如下(架设原始仓库为:leetcode/article):
此时,在原始仓库有任何新的更新之后本地操作只需要以下一步即可完成同步:
之后就可以继续在自己的 Fork 上面 commit, push,然后继续发起新的 Pull Request 了。
合并和变基操作
如果自己是项目的所有者,在有了 Pull Request 之后会遇到 Merge 还是 Rebase 的抉择问题,以下加以简单介绍。
Merge,字面翻译为合并,解决完冲突,执行 add 和 commit 操作,此时会产生一个额外的 commit。
Rebase,字面翻译为变基,解决完冲突,执行 add 和 git rebase --continue,不会产生额外的 commit。这样master 分支上不会有单纯用于 Merge 的无实际意义的 commit。
本文作者:Nova Kwok
声明:本文归 “力扣” 版权所有,如需转载请联系。