0%

Git学习笔记(从原理到VSCODE部署GitHub)

被关在宿舍期间因为电脑太卡所以从win11回退到win10版本(真香),回退之后原先通过Git和Hexo弄好的博客设置出现了一些问题,刚好借着这个机会系统学了学Git的逻辑,深感分布式备份和项目管理的美好(下次一起用GitHub写基金标书吧)。在两年前第一次用Git来搭建自己的博客时我只是单纯地以为它是一个windows下便捷的bash窗口,并且深信不疑了整两年。。。这只算一个开端,系统学习基础之后能玩的花样还有很多,后续希望能更新。也希望疫情之下朋友们一切都好。

分布式备份逻辑

Git备份逻辑

image-20220409104336852

团队内部合作

image-20220408133444242

githubgitee就是知名的远程库

跨团队合作

image-20220408133255369

Git配置

Git用户名及邮箱

1
2
3
git config --global user.name "example"

git config --global user.email "example"

本地仓库初始化

cd进入仓库所在文件夹,或者直接在文件夹路径内Git Bash Here

1
git init

文件管理

文件创建于工作区

文件从工作区加入暂存区

1
git add example.py

文件从暂存区进入本地库并加注释

1
git commit -m "这个文件为xx版本有什么用" example.py

注:必须在本地文件地址下才能提交到暂存区和本地库

文件状态查询

1
git status

Git版本控制

log参数查询版本

git文件历史查询

1
git log

在一行内展示索引

1
2
git log --pretty=oneline
git log --oneline

显示回退步数及指针的版本

1
git reflog

reset参数调整版本

同时重置工作区、暂存区、本地库

1
git reset --hard 索引号

同时重置暂存区、本地库,工作区不变

1
git reset --mixed 索引号

只重置本地库,暂存区、工作区不变

1
git reset --soft 索引号

删除/找回文件

删除工作区文件

1
rm example.py

把删除操作同步到暂存区

1
git add example.py

把删除操作同步到本地库

1
git commit -m "文件已删除" example.py

本地库找回文件原理为将版本切换至删除操作之前。

暂存区已删除,但本地库仍保留文件,可通过hard参数同步

diff参数比较文件

比较工作区与暂存区的文件

1
git diff example.py

批量比较工作区与暂存区的文件

1
git diff

比较暂存区与本地库的文件

1
2
git diff HEAD example.py
git diff 索引号 example.py

批量同理

Git分支

Git分支逻辑

分支思维导图 (1)

Git分支操作

查看当前分支

1
git branch -v

查看当前分支文件使用log命令即可

创建新分支

创建新分支的时候会自动clone目前master本地库的文件

1
git branch example_branch

切换分支

1
git checkout example_branch

Git分支冲突

当branch和master的同一个文件都进行了修改可以通过merge操作来进行整合.

1
2
git checkout master
git merge example_branch

当文件的同一行都被修改,发生冲突时,会显示冲突文件,状态栏会显示为(master|MERGING)

查看冲突文件内容

1
cat conflict_example.py

返回文件内容如下

1
2
3
4
5
6
#merge无冲突内容#
<<<<<<< HEAD
#master冲突内容#
=======
#example_branch冲突内容#
>>>>>>> example_branch

解决文件冲突后,在master下再次commit即可提交至本地库(注意commit不带文件名)

1
2
git status
git commit -m "解决了冲突问题,更新至版本xx"

使用远程库(GitHub)进行分布式备份

初始化本地库

1
2
3
git init
git add example.py
git commit example.py

创建远程库及别名

在GitHub上创建Repository并命名

https方式下远程库地址为 “https://github.com/username/repository_name.git",一般push的时候用远程库地址的别名

首先在本地查询有无已存在的别名

1
git remote -v

确认无别名后进行赋名

1
git remote add char_name https://github.com/username/repository_name.git

查询别名可返回该远程库的文件管理权限,fetch表示可获取,push表示可推送

本地库push至远程库

进入本地文件地址

1
git push char_name branch_name

远程库clone至本地库

使用clone命令,有目标远程库地址即可

1
git clone https://github.com/user_name/repository_name.git

clone命令自动初始化本地库,并将该远程库地址别名为“origin”

GitHub邀请协作账号

Repository页面,settings选项,manage access中invite collaborator

远程库pull至本地库

pull操作等价于(fetch + merge)

fetch操作不改变本地工作区的文件

需要核对fetch到的文件是否确实改变

1
2
3
4
5
git fetch char_name branch
git checkout char_name/branch #切换至远程库#
#针对远程库的一些检查#
git checkout master #切换回本地库主分支#
git merge char_name/branch #合并文件至本地库#

或者

直接进行pull操作

1
git pull char_name branch

SSH免密访问远程库

本地生成.ssh目录

1
2
cd ~ #进入用户根目录#
ssh-keygen -t rsa -C github账号邮箱@

c一定要大写

在.ssh文件夹中找到id_rsa.pub文件,打开文本复制,在GitHub设置中添加SSH keys即可

远程库的SSH地址别名

GitHub网站切换至SSH地址,一般为“git@github.com:user_name/repository_name.git”

1
git remote add char_name_SSH git@github.com:user_name/repository_name.git

检查别名后操作和上面没区别

在VSCode上部署Git并链接到GitHub

VSCODE添加本地库

VSCODE对于Git的集成非常方便,Git初始化本地库后在VSCODE源代码管理窗口加入文件夹即可,可以看到commit操作、add操作甚至包括stash操作都有很好的可视化交互

9891101ba8dec7a06067f26acd0dbe2

将GitHub部署到VSCODE

在VSCODE中上传一次设置好GitHub远程库就可以,注意事先要确保SSH或HTTP已经能连通

另外VSCODE默认不走配置代理,因为一些我国特色网络问题,需要根据你的上网工具的代理地址重新配置VSCODE,如下(一般V2RayN的本地监听端口都是10809,但是网上查了好多说法不一,大家以自己上网工具的代理设置为准)

78c1242b91689089cd7e0e62582b6b2

5b1f8199848f1147ada78ce731dd5f3

设置完成后就可以愉快同步了