Git
- 本质上是就是一个版本控制系统,只不过相对于传统的svn等集中式VCS,它的最大区别在于分布式,即DVCSS;
- 作为一个版本控制系统,最基本的三大功能
1. 版本控制
2. 主动提交 --不同于word等自动保存以至于我们撤销没办法直接到指定位置,而是我们主动commit保存记录,这样我们就可以通过命令到达任何一次的备份了
3. 远程仓库
- git三大特性
1. Branch 分支
2. Stage (index) 暂存区
3. wokeFlow 工作流
下载
- 毫无疑问的下载:直接网上下也挺方便,下面是我的网盘链接,无脑next就行
链接:https://pan.baidu.com/s/1c66qpJfIey_ly0C81Yezzw
提取码:u78r
复制这段内容后打开百度网盘手机App,操作更方便哦
ssh -key配置
检查是否有ssh文件(如果有但密码之类的都忘记了建议删掉.ssh文件根据下面步骤再来一遍)
打开Git,在Git命令行输入cd ~/.ssh检查电脑本机是否有ssh key设置,注意: .ssh是隐藏文件,一般在电脑C/用户/Administrator下面就能够找到。
一般情况下 ,之前没有用过git的同学电脑本机一般不会 有ssh key 的;
本机ssh生成公钥密钥
- 进入~路径下,必须保证当前路径在~路径下,填写邮箱
```
cd ~
ssh-keygen -t rsa -C "你的邮箱"
```
- 回车后先将出现如下代码(此时我们什么都不需要操作,直接回车就好)
```
Enter file in which to save the key (/c/Users/xxxx_000/.ssh/id_rsa): #
Enter passphrase (empty for no passphrase): # 此时要你输入码(可以为空,直接回车就好,也可以输入你的密码,这个密码在你最后把本地资源推送到github上面的时候回会让你填写密码,此时密码隐藏,你输入进去是看不到的)
Enter same passphrase again: # 再次确认密码(如果你第一次有输入密码,这次就再输一次,如果没有直接回车就行了)
```
- 如果出现如下,则说明本机已完成ssh key设置<br/>
Your identification has been saved in /c/Users/xxxx_000/.ssh/id_rsa. //生成的密钥 Your public key has been saved in /c/Users/xxxx_000/.ssh/id_rsa.pub. //生成的公钥 The key fingerprint is: e3:51:33:xx:xx:xx:xx:xxx:61:28:83:e2:81 xxxxxx@yy.com
添加ssh key 到Github上
- 首先登陆Github,点击右上角的“▼”→Settings→SSH kyes→Add SSH key。
- 然后在打开c:/Users/xxxx_000/.ssh里面的id_rsa.pub文件,全选复制公钥内容
- 也可以在git bush中的命令行输入cat ~/.ssh/id_rsa.pub,将得到公钥
- Title自定义,将公钥粘贴到GitHub中Add an SSH key的key输入框,最后“Add Key“ 登陆github 或 gitlab ,点击右上角的头像,选择Settings
点击SSH and GPG keys,点击右侧的New SSH key
在Title处给该公钥取个名称,在Key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。
4. 配置账户
//本质上是因为git属于CVCSS,分布式版本控制系统,即通俗而言,每个人的电脑都是一个分支,所以需要声明一个你的标识 git config --global user.name "你的用户名" git config --global user.email "你的邮箱"
5. 测试ssh keys是否设置成功。
ssh -T git@github.com
yes,然后输入密码后出现如下,则配置成功

### 怎么上传,如何做到利用git服务器来在公网看自己的网页呢?
1. 要想看,先上传
- 在github上新建一个仓库
- 配置bash,点击“开始”搜索git 点开git bash终端 输入以下命令
git add . //.是指全部 或者也可以用要上传的用户名代替 git commit -m "第一次提交" //注释说明 git remote add origin ssh //ssh是指你的仓库ssh,怎么创建,搜搜超简单(ssh位置见下图) git push -u origin master //提交到你的仓库

2. 怎么公网访问
- 打开该仓库的setting,下拉到GitHub Pages项目,此处既有链接

### vscode配置bash
"terminal.integrated.shell.windows": "E:\professionsoft\Git\bin\bash.exe", "git.enableSmartCommit": true, "git.path": "E:\professionsoft\Git\bin\git.exe"
### 补充
##### 一些报错
###### fatal: remote origin already exists.
- 一般出现于remote add时,意思是已存在远程联系了,那很简单,说明之前连错了,删掉重连就行,删掉的命令(删)
```
#name为远程连接的名称,一般默认为 origin,即git remote rm origin
git remote remove <name>
```
- 相对应的添加远程连接命令(增)
```
# url 为你的远程仓库的 url,可采用 http 协议或 ssh(git) 协议
git remote add origin <url>
```
- 修改远程仓库的关联(改)
- 修改关联的远程仓库的方法,主要有三种:
1. 第一种:使用 git remote set-url 命令,更新远程仓库的 url
```
git remote set-url origin <newurl>
```
2. 第二种:先删除之前关联的远程仓库,再来添加新的远程仓库关联(命令参考上述)
3. 第三种:直接修改项目目录下的 .git 目录中的 config 配置文件。
###### Updates were rejected because the tip of your current branch is behind
- 远程repository和本地的repository冲突导致
- 解决方法:<br/>
1. 使用强制push命令
```
# 但会使远程修改丢失,本人亲测。。会直接覆盖远程中与本地仓库冲突的地方(我的情况是把之前的代码全覆盖了。。。),三思后行
git push -u origin master -f
```
2. push前先将远程repository修改pull下来
```
git pull origin master
git push -u origin master
```
3. 若不想merge远程和本地修改,可以先创建新的分支,然后push
```
$ git branch [name]
$ git push -u origin [name]
```
###### fatal: HttpRequestException encountered.
发送请求时出错。
发现是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器才行 解决问题也很简单,打开下面链接,下载运行.exe文件即可 github.com/Microsoft/G…

##### 一些冷知识
###### 在項目交由git托管(git init命令)后,会存在版本库(.git文件夹),我们说的缓存区stage就是其中的index文件,版本库内包含所有git操作所需要的东西
<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/3/6/16951ef86a1979a2~tplv-t2oaga2asx-image.image">
<strong>hooks(钩)</strong>:存放一些shell脚本
<strong>Info:exclude</strong>:存放仓库的一些信息
<strong>logs</strong>:保存所有更新的引用记录
<strong>HEAD:</strong>
<img src="https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/3/6/16951f32e825dd29~tplv-t2oaga2asx-image.image">
<b>objects</b>:存放所有的git对象
<b>COMMIT_EDITMSG</b>:最新提交的一次Commit Message,git系统不会用到,给用户一个参考
<b>description</b>:仓库的描述信息,主要给gitweb等git托管系统使用
<b>config</b>:git仓库的配置文件
<b>index</b>:暂存区(stage),一个二进制文件