Git学习记录

0x0 前言

没系统学过git,老是有一些问题就谷歌,解决完问题又没时间记,感觉不是个办法。正好看到一篇敲详细的文章(感谢作者整理),所以决定重头学习一遍并且把难点记录下来。第一次写文章🔰,如果文章有错或者有其它问题欢迎评论指正


0x1 Git概述

Git的四个组成部分

详情见来源
// stash区域应该算是一个独立的部分,不受这些命令干扰。

Git中的四类对象

Blob(块)对象,Tree(树)对象,Commit(提交)对象,Tag(标签)对象。 –来源

每一个对象都会有一个对应的 hash 值 (SHA-1)。

git hash-object <file> # 计算blob的hash
git cat-file [-p|-t] <hash> # -p查看对象内容 -t查看对象类型

blob一听就知道是个二进制,它只存文件内容。文件名等信息的就在tree里,很像操作系统的目录表结构。而树对象不仅可以引用blob,还能引用tree构成一个多层目录结构,这点像很像文件夹。

git ls-tree <hash> # 查看树对象内容

一个commit中只记录一个树,鉴于树的套娃结构,commit里对应的是最根部的树对象。commit会有一个很短的值,那其实不是完整的 hash 值,只是取前几位作为了缩写(只要唯一就行)。


0x2 Git配置

git config

  • system: win 端好像都是C:/Program Files/Git/mingw64/etc/gitconfig
  • global: win 端地址C:/Users/<username>/.gitconfig
  • local: 项目中.git/config

三种级别配置文件,就近覆盖生效。local > global > system 一般都用 global

# 配置代理:
git config --global http.proxy 'http://127.0.0.1:1080' # socks5:// 好像也可以
git config --global --unset http.proxy  # 取消代理
# 设置别名如:
git config --global alias.st 'status -s -u' # 之后可用 git st

这样配置在文件中是这样:(我的.gitconfig

[github]
    user = <github username>
    token = <personal access token>
[http]
    proxy = http://127.0.0.1:1080
[alias]
    st = status -s -u
    cm = commit -m
    lg = log --graph --oneline --abbrev-commit

注意:设置了 2FA 两步验证则无法使用[user]密码登录,必须提供 token 作为凭据。

.gitignore

Github 官方有专门的一个 仓库 给出各语言的模板。下方匹配模式摘自 来源

  • *:零个或多个任意字符
  • [abc]:只匹配括号内中的任意一字符
  • [0-9]:范围内任一字符
  • ?:任意一字符
  • **:任意的中间目录
# .gitignore
!index.d.ts    # 除了这个文件
dir/           # 忽略该文件夹下所有
dir2/**/*.o    # 所有dir2下子文件中的.o文件

已经被 tracked 的文件即使加入.gitignore也无法解除追踪,StackOverflow


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值