Git 备忘
submodule
添加子模块
git submodule add https://github.com/xkyii/xkyii-obsidian-paste-renamer.git renamer
查看子模块
git submodule
更新子模块
git submodule update
# 更新到最新的远程版本
git submodule update --remote
删除子模块
- 删除文件夹
git rm --cached renamer
- 删除
.gitmodules
文件中相关子模块信息
[submodule "renamer"]
path = renamer
url = https://github.com/xkyii/xkyii-obsidian-paste-renamer.git
- 删除
.git/config
中相关子模块信息
[submodule "renamer"]
url = https://github.com/xkyii/xkyii-obsidian-paste-renamer.git
- 删除
.git
文件夹中相关子模块信息
rm -rf .git/modules/renamer
取消跟踪
### 对某个文件取消跟踪
# 删除readme1.txt的跟踪,但不删除文件。
git rm --cached readme1.txt
# 删除readme1.txt的跟踪,并且删除文件。
git rm --f readme1.txt
### 对某个文件夹取消跟踪
# 删除所有.idea目录下文件的跟踪,但不删除文件。
git rm --cached **/.idea/ -r
# 删除所有.idea目录下文件的跟踪,并且删除文件。
git rm -f **/.idea/ -r
### 对所有文件都取消跟踪
# 删除所有文件的跟踪,但不删除文件
git rm -r --cached .
# 删除所有文件的跟踪,并且删除文件
git rm -r --f .
本地目录服务
使用本地目录作为远程服务
- 新建
mkdir local_server
cd local_server
git init
- 替换文件
.git/hooks/post-update
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
# 作为本地远程仓库时注释掉以下1行:
# exec git update-server-info
# 作为本地远程仓库时加上以下3行:
unset GIT_DIR
cd ..
git checkout -f # 关键是这句
- 使用
git flow
之后, 服务端就不会显示对应的文件了
裸仓库
git init --bare
镜像仓库
# 克隆为镜像仓库
git clone --mirror https://xxxx.git
# 更新,方式一
cd xxxx.git
git remote update
# 更新,方式二
git --git-dir=xxxx.git fetch --all
LFS
lfs migrate
参考: GIT仓库瘦身及GIT LFS迁移说明_git lfs migrate
cd mlcache-doc
# 转换为git lfs项目,
# include表示转换为lfs的文件
# everything表示每个分支都会添加相应的.gitattruibutes文件
git lfs migrate import --include="*.docx,*.xlsx,*.vsdx,*.pdf" --everything
# 查看转换为lfs的文件
git lfs ls-files
# 强制推送所有分支
git push --force --all
# 清理本地lfs缓存
git reflog expire --expire-unreachable=now --all
git gc --prune=now
常用
自动提交
rem secret
cd secret
git add --all
git commit -m "Up: auto commit"
git push origin
cd ..