Table of Contents

Git

E:\Dev>git --version
git version 2.36.1.windows.1

TODO:有很多内容待整理,趁现在熟悉及时整理了

VS Code侧边栏自带git(可视化操作)功能,也支持查看diff,已经很足够用了,推荐

  1. 十分钟学会正确的github工作流,和开源作者们使用同一套流程(码农高天) https://www.youtube.com/watch?v=uj8hjLyEBmU

子命令

命令 作用
Clone 复制
Init 初始化
Remote 远程
Add 添加
Revert 恢复
Reset 重置
Restore
Clean 清理
Rm 删除
Commit 打包
Fetch 拉取
Pull 更新
Push 推送
Merge 合并
Diff 显示修改
Branch 分支
Tag 标签
Checkout 检出
Rebase 变基
Cherrypick 摘取
Stash 暂存
Log 日志
Reflog 引用日志
Show 显示
Config 配置

问题

待整理

Repo

Git Repository表现为一个文件夹

Git是一个版本管理工具,除了GitHub还有其他网站如GitLab等支持Git

Git报错:Unable to create 'XXX/.git/index.lock': File exists.
解决方法:去工程的.git文件夹,删除index.lock文件

其他

有冲突的时候怎么取消合并的步骤 master是一个特殊分支吗?从功能性上来说,有主分支这种概念吗? 很久没有pull/push,积累了很多commit,冲突很多,那要一次性解决完吗? 40位的ID和8位的ID,什么关系?8位ID是前缀啊! push和pull就是同步而已 push之前先pull,谁要合并谁就解决冲突 add 之后就是 index index就是staging area(staged area) HAED就是Repo,为什么?!因为Repo不需要存储Working Dir和Index,只需要HEAD的部分 本地的HEAD就是Remote HEAD的同步版本 release issue 是git的功能吗,还是只是Github的功能? git怎么不拉所有的分支/所有的commit记录?

git checkout HEAD~1 其中HEAD~1表示HEAD前的1个Commit

命令

待整理:

冲突

对于非文本文件,Git检测冲突的最小单位是文件,对于文本文件,Git检测冲突的最小单位是行。

问题:二进制文件和文本文件是如何区分的?
猜测:实际上两种类型的文件都是存储为二进制,但是文本文件符合一定的编码规则,比如按照特定的解码规则,解码的时候不会出现错误,普通的二进制文件肯定是不可以的,应该就是按照这样的方式进行区分文本文件和二进制文件的吧。

修复冲突可以直接选择使用冲突两方的某一方的版本覆盖冲突的部分。

分支

Branch

标签

Tag

认证

Github使用token认证,可以为不同的Repo设置不同的token,但是这样Repo A的token保留在电脑上,再push Repo B的时候就会认证失败,还挺不方便的,我并没有找到能用的清除本地token记录的方式,只能用下面的方式代替:

# 在无法推送的Repo中:
# 查看remote地址
> git remote -v
origin	https://github.com/GZhonghui/xxx.git (fetch)
origin	https://github.com/GZhonghui/xxx.git (push)

# 修改remote地址,顺便把正确的token填入
git remote set-url origin https://github_username:token_of_this_repo@github.com/GZhonghui/xxx.git

# 然后就可以push啦

子模块

Submodule,子模块将整个工程分割开来,子模块也就是依赖,但是不用将依赖的代码添加到自己的工程中来,而且一般是依赖别人的库,使用Git的子模块可以很方便的将别人的库添加到自己的库中,依赖的模块也可以很方便地更新。

大文件

Git LFS,大坑

使用Git上传大文件的时候很可能遇到LFS的错误。先不说LFS能不能用,就算能用,它的性能也绝对不够,直接禁用就好,使用以下命令移除Git LFS:

git lfs uninstall

服务器

.git文件是干啥的

可视化工具

指令合集

资料来源:GeekHour
git_gitcheatsheet-bygeekhour.pdf

Odt笔记(20221007)