Git

发布于 更新于

AI总结: 本文介绍了查询Git提交用户记录、修改历史提交用户信息、拉取其他分支、将浅克隆转换为完整克隆、比较分支并导出变更文件,以及删除敏感文件历史提交记录的相关命令和步骤。具体包括使用git log获取用户信息,git filter-repo修改用户信息,git clone进行浅克隆和获取其他分支,git diff导出变更文件为zip压缩包,以及使用git filter-branch删除敏感文件的历史记录。 优化建议: 1. 在执行命令时,建议在每个步骤前添加简要说明,以便于理解和操作。 2. 对于复杂命令,提供示例输出或预期结果,以帮助用户确认操作是否成功。 3. 考虑添加常见错误及其解决方案,以提高用户体验。 4. 建议将敏感文件删除的步骤与其他操作分开,以避免误操作。

查询Git提交用户记录

git log --format="%an <%ae>" --all | sort | uniq

--all:包括所有分支的提交。

sort | uniq:对结果排序并去重。

输出示例:

random <r@n.dom>

修改历史提交用户信息

git filter-repo --name-callback "return b\"random\"" --email-callback "return b\"r@n.dom\"" --force

git push --force

PS: 在 Windows 的 CMD 中,单引号可能不被识别,建议用双引号

depth=1 拉取其他分支

当你使用 git clone --depth 1 克隆仓库时,Git 只会克隆最新的提交历史(浅克隆),并且默认只拉取默认分支(通常是 main 或 master)。如果你需要获取其他分支, 执行以下命令

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch --depth=1
git checkout branch-name

将浅克隆转换为完整克隆

git fetch --unshallow

比较分支并导出变更文件

git diff 6db1256718a184ece757df2b7d8bf22444801661 8906e42d5aeff10b70086bd7aece0f3663edbddd --name-only | xargs zip update.zip

# 比较文件并导出为zip压缩包, 根据本机情况可以选择zip或者7zip
git diff feature/xxx-0719 origin/master --name-only | xargs zip user.zip

git diff feature/xxx-0719 origin/master --name-only | xargs 7z a -tzip user.zip

删除敏感文件历史提交记录

.vscode/settings.json文件为例

git filter-branch --force --index-filter  "git rm --cached --ignore-unmatch .vscode/settings.json" --prune-empty --tag-name-filter cat -- --all

git add .
git commit -am "commit"
git push origin --force --all

067 Git删除大文件