Git-1.安装配置及基本概念

培训材料

组内培训PPT

官方文档
官方文档-中文

Git安装

主流系统安装参考如下:

其他机器或系统版本可参考官网 Git安装

账号配置

配置全局统一的账号

配置全局的name和email,参照你创建的工程Git global setup

方法一

1
2
3
4
5
6
7
git config --global user.name "liubo4"  #存储账号
git config --global user.email "liubo4@genomics.cn" #存储邮箱
# 不添加 --global 仅对当前仓库有效,信息存储到仓库目录 `.\.git\config` 文件中。
# --global:表示该机器上所有的Git仓库都会使用这个配置,存储到` ~/config `文件中。

### 方法二
ssh-keygen -t rsa -C "liubo4@genomics.cn" #生成秘钥, 将秘钥生成的文件: id_rsa.pub 中的内容复制到gitlab中(Edit profile==>SSH key==> Add an SSH key );后期可以通过密钥进行身份验证。

配置多个账号

有时候,由于各种原因(需要同时使用多个仓库平台,例如:github存放一些个人代码和企业gitlab存放公司业务代码),因此经常会遇到我们需要同时访问多个git托管平台。这时候密钥的优势就体现出来,可以自动通过不同的域名(IP)调取对应的密钥进行数据的访问,极大的提高我们的效率。

  • 首先针对我们每个不同的托管平台账号生成各自的密钥信息。以gitlab & github为例。

    1
    2
    3
    ssh-keygen -t rsa  -f ~/.ssh/id_rsa_gitlab -C "gitlab@account" 

    ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C "github@account"
  • 生成密钥后,在密钥存储目录创建~/.ssh/config文件并进行相关信息的记录,config文件格式如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # github
    # host 与 hostname 需要相同
    Host github.com
    HostName github.com
    # 你的github账号
    User github@account
    # github对应的rsa秘钥文件
    IdentityFile ~/.ssh/id_rsa_github

    # gitlab
    # host 与 hostname 需要相同
    Host gitlab.genomics.cn
    HostName gitlab.genomics.cn
    # 你的gitlab账号
    User gitlab@account
    # gitlab对应的rsa秘钥文件
    IdentityFile ~/.ssh/id_rsa_gitlab

完成上述步骤后,分别将不同托管平台对应生成的秘钥文件信息添加到对应平台中,例如:
gitlab中添加方式: Edit profile ==> SSH key ==> Add an SSH key ;
github中添加方式:Settings ==> SSH and GPG keys ==> New SSH key。
然后就可以直接对多个不同托管平台的数据进行操作,而不用每个仓库单独配置账号和权限了。
更多的关联配置参考文章《git多账号多仓库的配置》

基本知识

Git的4个结构区域

git的整体工作结构区域分为如下4个区域类型
image

  • 工作区:项目的工作目录
  • 暂存区:修改的文件会暂时存储在该区域,也叫index区
  • 本地仓库:即隐藏目录 .git,是 Git 的版本库
  • 远程仓库:即常说的github,gitlab,可在线获取

Git文件的4种基本状态

  • 未追踪(untracked)
    文件已经在文件夹中,但没有加入git库,也不参与版本控制
  • 已修改(modified)
    已修改表示修改了文件,但还没保存到本地git仓库中
  • 已暂存(staged)
    已暂存表示对一个已修改的文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交(committed)
    已提交表示数据已经安全的保存在本地git仓库中。

Git的常见配置文件

忽略文件(.gitignore)

当不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件时,可以使用“.gitignore”文件进行标识
“.gitignore”文件规则:

  • 忽略文件中的空行或以井号(#)开始的行。
  • 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  • 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  • 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  • 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

eg:

1
2
3
4
5
#为注释
*.txt #忽略所有.txt结尾的文件
!lib.txt #lib.txt除外
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc目录下“.txt”为后缀的文件

如果文件已经被追踪,在 .gitignore 中添加后,需要清除一下此文件的 git 缓存,git rm -r --cached 文件名, 然后再进行 commit和 push即可。

大文件管理

通过使用 git lfs 进行流程中大文件的管理,需要提前安装 1.8.5以上版本的git 。
参考文档

git lfs下载安装

下载 git-lfs-linux-386-v2.10.0.tar.gz 拷贝至集群。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tar -zxvf git-lfs-linux-386-v2.10.0.tar.gz
解压后会在当前目录产生下列4个文件
-rw-r--r-- 1 OseqPub b2c1 77881 May 9 00:17 CHANGELOG.md
-rwxr-xr-x 1 OseqPub b2c1 10248192 May 9 00:20 git-lfs
-rwxr-xr-x 1 OseqPub b2c1 389 May 9 00:17 install.sh
-rw-r--r-- 1 OseqPub b2c1 7522 May 9 00:17 README.md
#将git-lfs所在目录加到环境变量中$PATH

#执行 安装git lfs
git lfs install

for i in `find . -type f -size +100M ` ;do git lfs track $i ;done # 跟踪大文件
git lfs ls-files 可以显示当前跟踪的文件列表
git lfs clone 下载lfs文件
-------------本文结束感谢您的阅读-------------