https://github.com/longtian/git-internals
https://github.com/longtian/git-internals
git
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/longtian/git-internals
- Owner: longtian
- License: mit
- Created: 2017-02-27T10:13:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-03-01T13:02:16.000Z (over 8 years ago)
- Last Synced: 2025-03-30T13:37:19.606Z (8 months ago)
- Topics: git
- Language: JavaScript
- Size: 159 KB
- Stars: 7
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# git-internals
看到颜大大写的[这篇文章](http://yanhaijing.com/git/2017/02/08/deep-git-3/),很受启发。
然后我自己去读了一遍 Git 文档的[第 10 章](https://git-scm.com/book/zh/v2)和
[这个视频](https://www.youtube.com/watch?v=dBSHLb1B8sw),顺便写了一个工具,
来辅助理解文中的各种概念。
## 功能
这个工具能够把 `.git` 下的一些关键文件、目录、配置等一起显示到浏览器里,这样就不需要每次去使用不同的命令查看不同文件内容。
## 环境依赖
- Linux 或者 Mac,且安装了 `git`,`tree`,`node` 命令行工具
## 使用说明
建一个全新的 Git 仓库:
```sh
mkdir -p /tmp/src
cd /tmp/src
git init
```
切换到本项目的目录,通过 `REPO_FOLDER` 环境变量指定本地代码仓库的地址,启动 `express` 服务器:
```
npm install
REPO_FOLDER=/tmp/src node server.js
```
通过浏览器打开:
```
http://localhost:3000/
```
回到 `/tmp/src` 目录执行各种 Git 命令,每次执行完命令可以刷新浏览器,查看文件系统的变化。

## 注意
- 如果 Git 的全局配置打开了 `GPG Sign` 可能会让提交的原始文件很长, 可使用 `git config commit.gpgsign false` 临时关闭
- 尽量不要执行 `git gc`,不然就看不到 `loose objects` 的详细记录了
- 因为会调用 `execSync` 但是没有考虑防范命令行注入攻击什么的,所以请在安全的网络环境下实验