前言:自学笔记整理
目录
1. Git配置
1.1 git配置属性
- git config --list 查阅
- 允许提交包含混合换行符的文件
git config --global core.safecrlf false
1.2 Git ignore 忽略文件
这里可查阅所有语言的ignore模板:Git ignore模板
若不购买github的私有仓库,上传时需要屏蔽诸如域名、IP、数据库账户密码等敏感信息。
git忽略规则匹配语法
- ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。
- / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
- / 开始的模式匹配项目和目录
- 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
- ** 匹配多级目录,可在开始,中间,结束
- ? 通用匹配单个字符
- [] 通用匹配单个字符列表
常用匹配示例:
- bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
- /bin: 忽略根目录下的bin文件
- /*.c: 忽略 cat.c,不忽略 build/cat.c
- debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
- **/foo: 忽略/foo, a/foo, a/b/foo等
- a/**/b: 忽略a/b, a/x/b, a/x/y/b等
- !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
- *.log: 忽略所有 .log 文件
- config.php: 忽略当前路径的 config.php 文件
vim .gitignore 编辑/新增该文件,在文件中添加内容
-
忽略某个文件:
.project
添加后,该文件不能被加入暂存区(但可通过force命令强行加入,如下图)
-
这里给个Java 的.gitignore文件示例:
1.3 日志格式化
git log --pretty=format:’%h %ad | %s%d [%an]’ --graph --date=short
1.4 别名配置
e.g. 设置commit别名为ci
执行命令:git config --global alias.ci commit
执行后查看.gitconfig配置文件:
同样的道理,我们设置一些其他的别名:
1.5 凭证存储
- HTTP协议(BASH窗口提交)
凭证交由wincred存储,后续提交不用重复输入用户密码:
git config --global credential.helper wincred - SSH协议,这个见下文
2. 协议
2.1 本地协议
- 克隆本地仓库
git clone /d/GitRepositry/cubase - 克隆本地仓库,不建议使用file://
git clone file:///d/GitRepositry/cubase.git - 添加远程仓库链接
git remote add origin /d/GitRepositry/cubase.git
2.2 Git协议
Git协议
- 因为没有授权机制,一般仅用于只读,和其他协议一起配合使用
- 速度是所有协议中最快的
- 要求开放9418端口
举例:
- 克隆远程仓库
git clone git://server_ip/test.git - 添加远程仓库链接
git remote add origin git://server_id/test.git
2.3 HTTP协议
优点:
- 容易上手,不需要配置密钥对
- 走80端口
缺点:
- 基于超文本协议,数据传输效率不高
- 配置起来比SSH麻烦
- 需要借助第三方工具来存储凭证
示例:
- 克隆远程仓库
git clone https://github.com/[githubUsername]/test.git - 添加远程仓库链接
git remote add origin https://github.com/[githubUsername]/test.git
2.4 SSH协议
2.4.1 简介
SSH: Secure Shell
优点:
- 非常安全
- 数据压缩最大,传输速度快
缺点:
- 需要配置密钥对(比起http协议稍微复杂一点)
示例:
-
克隆远程仓库,一般写成简短的命令
git clone ssh://git@github.com/[githubusername]/[repositoryname]
简写:
git clone git@github.com:[githubusername]/[repositoryname].git -
添加远程仓库的链接
git remote add origin git@github.com:[username]/test.git
2.4.2 生成&配置密钥对
看网上同学们都直接这样用的:ssh-keygen -t rsa -C “[your email]”
但官方给的是:ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
这个 -b 是搞毛用的我没有测试,官网也没有给出说明,那就当作语法直接用吧
- [-t rsa] 表示使用 RSA 算法。
- [-b 4096] 表示 RSA 密钥长度 4096 bits (默认 2048 bits)。Ed25519 算法不需要指定。
- [-f my_id] 表示在【当前工作目录】下生成一个私钥文件 my_id (同时也会生成一个公钥文件 my_id.pub)。
- [-C “email@example.com”] 表示在公钥文件中添加注释,即为这个公钥“起个别名”(不是 id,可以更改)。
在敲下该命令后,会提示输入 passphrase,即为私钥添加一个“解锁口令”。
示例:
这里没有直接enter,而是输入了一个cubase字符串,在当前目录下生成的密钥对,直接enter则使用默认目录
我这里是自测,所以瞎搞搞。
个人建议还是直接使用默认目录比较好,ssh key的密码也不要输入了,这样明显更方便。
cubase是私钥
cubase.pub是公钥
然后把公钥添加到远程仓库中:
添加成功如下图:
注意:密钥对需要保管好,最好做个备份
然后使用SSH协议拉取项目
好,拉取项目被拒绝了。因为创建公钥的时候自定义了密钥文件
进入默认目录:C:\Users\Thinkpad.ssh
创建config文件,指定私钥文件
我这里把生成的密钥对,拷贝到了该目录下,方便统一管理:
Host cubase
Port 22
User git
HostName github.com
IdentityFile ~/.ssh/cubase
克隆项目的时候注意修改为config配置文件中的host
到这里就差不多了,再pull时也不会提示让你输入账户密码了
不过创建密钥对时,若给密钥设置了密码,还是有提示(这个我建议就不给ssh key加密了吧),感兴趣的同学可以再搜一下是否在config文件中可以统一配置