1. github简介
我对GitHub不甚了解。现在很多生物信息学软件的Paper中都提供了软件的Github网址。
个人理解,GitHub能很方便用于开源软件的存储和代码维护。软件开发人员在Github网站注册一个账户后,相当于在Github服务器上有了账户和密码;开发某个项目的软件后,可以将软件源代码通过该账号和密码上传到Github服务器上;每次软件维护和代码上传,都会详细记录更新的内容;其它人可以将代码下载,并进行修改,形成软件的分支。
2. 在Github软件上注册用户
在Github注册页面注册一个账户,Username: train-chenlianfu;Email address:910432211@qq.com;Password: train123456;再点击Create an account,完成注册。
3. 安装git软件
在CentOS系统上,虽然自带git软件,但是推荐使用高版本git,否则可能版本过低,导致不能兼容https而不能使用。
下载并安装最新版本git软件:
$ wget https://github.com/git/git/archive/v2.17.0.tar.gz -O git-v2.17.0.tar.gz $ tar zxf git-v2.17.0.tar.gz $ cd git-2.17.0/ $ make configure $ ./configure --prefix=/opt/sysoft/git-2.17.0 $ make -j 24 $ make install $ echo 'PATH=/opt/sysoft/git-2.17.0/bin/:$PATH' >> ~/.bashrc $ source ~/.bashrc $ cd .. && rm -rf git-2.17.0
4. 在GitHub创建一个项目
新注册账号会弹出需要验证邮箱地址的信息,在邮箱收件箱中点击链接,进入GitHub主页;
点击GitHub主页右上角的加号“+”,弹出一个菜单,点击New repository;
在Repository name栏输入一个软件名称,例如:blast_tools;
再勾选Initialize this repository with a README,表示给本项目直接生成一个文件README.md;
在Add a license下拉菜单中选择GNU General Public License v3.0,表示本项目是开源项目,软件中自动增加一个文件LICENSE;
点击Create repository,创建项目。
5. 使用git管理代码的上传和更新
从GitHub上下载blast_tools软件:
$ git clone https://github.com/train-chenlianfu/blast_tools.git
$ git clone git@github.com:train-chenlianfu/blast_tools.git
推荐使用后者ssh方式来clone软件,特别是需要密钥支持时。 $ cd blast_tools/ $ ls LICENSE README.md 在当前工作目录下生成文件夹blast_tools,该文件夹中包含两个文件:LICENSE和README.md。 其中README.md中仅包含一行内容:“# blast_tools”;该文件内容能直接显示在GitHub网站的本项目主页上;#号表示该行使用加粗加黑加大字体显示。 其实,在当前文件夹下,还存在一个隐藏文件夹.git,该文件夹 $ git pull 当需要更新相应的软件时,使用pull将更新的数据下载过来。
在blast_tools/文件夹中写软件代码,例如编写了perl程序blast.pl,并修改了README.md文件内容。
此外,若由于网络原因导致github使用不佳,需要代理:
设置git代理 git config --global http.proxy "47.104.224.181:3128" git config --global https.proxy "47.104.224.181:3128" 取消代理 git config --global --unset http.proxy git config --global --unset https.proxy
点击GitHub主页最右上角的用户图标,在下拉菜单中选择Settings,进入用户设置;在左边一栏中点击SSH and GPG keys;再点击New SSH key;在Title一栏中随意输入字符train_ssh;再在Key一栏中输入OpenSSH的公钥(点击进入本博客OpenSSH公钥生成方法的介绍文章);最后点击Add SSH key;添加公钥后,则可以将本地的软件代码通过git命令同步到GitHub网址上。
将本地修改或增加的文件上传到GitHub上:
$ git config user.email "910432211@qq.com" $ git config user.name "train-chenlianfu" 以上两行命令设置该项目对应的GitHub项目的用户名和邮箱地址,用于修改.git/config配置文件内容。 $ git add * 对当前工作目录中的所有文件提出更改。当然git add命令后可以接指定的多个文件或文件夹。 $ git rm -r files 删除文件或文件夹。若直接使用系统的rm命令,则仅删除本地的。使用git rm命令则可以删除githhub上的文件。 $ git commit -m "first submit" 提交本次改动,本次改动的所有文件,在GitHub中全部被批注成"first submmit"。 程序会自动检测有有多少个文件有改动,插入多少字符,删除多少字符等。这些改动信息会存于本地.git文件夹中。 $ git push origin master 将改动信息和文件推送到origin(GitHub项目)的master分支(一个项目可能有多个分支,此处将本地改动推送到主分支)上。可能会弹出界面需要输入用户名和密码。 origin是一个远程项目,在.git/config配置文件中有定义origin指向了GitHub的网址https://github.com/train-chenlianfu/blast_tools.git。
6. 设置github的ssh密钥,用于数据推送和下载
从2021.8.13开始,github不再支持输入密码进行代码上传和下载了。此时,推荐使用SSH密钥来进行快捷安全的操作。需要注意的是github不支持普通的dsa和rsa密钥,推荐使用ed25519类型的密钥,并要求公钥尾部是github的注册邮箱。具体操作方法:
先在Linux服务器中生成一堆密钥:
ssh-keygen -t ed25519 -P '' -f ~/.ssh/id_ed25519 -C chenllianfu@foxmail.com
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
然后将~/.ssh/id_ed25519.pub的内容填入到github网站中:登录github网站,点击右上角用户的设置,然后在左边栏目中点击SSH and GPG keys,按提示输入公钥信息并保存。
最后,在Linux服务器中检测是否成功:
ssh -T git@github.com
出现一下信息,则表示成功:
Hi chenlianfu! You've successfully authenticated, but GitHub does not provide shell access.
7. 重新对自己的软件构建本地仓库
若本地软件被删除了,则可以从github上下载最新的软件,然后继续对软件维护和更新。
首先从https方式下载软件,例如:
git clone https://github.com/chenlianfu/geta.git
然后修改下载软件中的 git 配置文件 geta/.git/config:
url = https://github.com/chenlianfu/geta.git
将以上网址修改为以下的网址,表示ssh连接github,才能上传数据。
url = git@github.com:chenlianfu/geta.git