Skip to main content

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 ..