Install - Software - Git

He knows most who speaks least.

大智若愚

Updated time: 06/23 2026.

Git 与代码托管:本地与超算建立 git 连接、Github 配置。

建立联系 本地和超算的 git

1. 创建初始 git, 超算

mkdir -p ~/myproject.git
cd ~/myproject.git
git init --bare

2. 本地仓库,创建连接

git remote remove origin
git remote add zcm6 "scg6928@ZC-M6@ssh.cn-zhongwei-1.paracloud.com:~/mysoft/pei/project/vasp_utils.git"
git remote set-url zcm6 "scg6928@ZC-M6@ssh.cn-zhongwei-1.paracloud.com:~/mysoft/pei/project/vasp_utils.git"
git remote add a8 "a8s000114@BSCC-A8@ssh.cn-zhongwei-1.paracloud.com:~/mysoft/pei/project/vasp_utils.git"
git add .
git commit "update"
git push zcm6 main

3. 设置裸仓库的默认分支, 在裸仓库中,手动将HEAD指向默认分支(例如main):

cd /public3/home/scg6928/mysoft/pei/project/mymetal.git
git symbolic-ref HEAD refs/heads/main
cd /workdir/
rm -rf *
git clone /public3/home/scg6928/mysoft/pei/project/mymetal.git .

git remote -v
git remote remove origin
git remote add a8 /public3/home/scg6928/mysoft/pei/project/mymetal.git
git push --set-upstream a8 main

3.1 设置 .gitignore 忽略 __pycache__ 文件夹

  1. 创建或编辑 .gitignore 文件: 在项目的根目录中创建或编辑一个 .gitignore 文件,并添加以下内容:

    __pycache__/
    *.pyc
    *.pyo
    

    这会忽略所有 __pycache__ 文件夹以及 .pyc.pyo 缓存文件。

  2. 移除已跟踪的 __pycache__ 文件夹: 如果 __pycache__ 文件夹已经被添加到仓库中,需要将其从版本控制中移除,同时保留在本地。运行以下命令:

    git rm -r --cached __pycache__
    

    该命令会从版本控制中移除 __pycache__ 文件夹,但不会删除本地文件。

  3. 提交更改: 提交 .gitignore 文件的更新,以确保所有协作者都忽略 __pycache__ 文件夹:

    git add .gitignore
    git commit -m "Add .gitignore to exclude __pycache__ and other cache files"
    git push origin main
    

4. 本地同步

git pull zcm6 main

Github 配置

要设置这些 Git 别名和用户信息,您可以在终端中使用以下命令来配置。每条命令会单独设置一个配置项:

设置用户信息

git config --global user.name "ShengLin1001"
git config --global user.email "cumt_junpei@163.com"

配置常用的 Git 别名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

设置格式化的日志显示

这会创建一个 lg 别名,用于查看带有提交图、颜色和简洁格式的日志:

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

创建一些快捷别名

git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
git config --global alias.ac "!git add -A && git commit -m"

设置默认推送和拉取操作

配置pushpull的别名,使得 git pushgit pull 直接作用于 origin/main 分支:

git config --global alias.push "push origin main"
git config --global alias.pull "pull origin main"

这些命令会将配置写入您的 Git 全局配置文件中(通常位于 ~/.gitconfig),使得这些别名和用户信息在所有项目中生效。这样可以加速您的日常 Git 操作并简化命令输入。

方法 3:使用 Git 的别名来简化操作

Git 允许设置别名,可以创建一个别名来简化多远程仓库的 pushpull 操作。

  1. 设置批量推送的别名

    git config --global alias.pushall '!for remote in $(git remote); do git push "$remote" main; done'
    

    这样,在任何多远程仓库中只需运行 git pushall 即可推送到所有远程仓库。

  2. 设置批量拉取的别名

    git config --global alias.pullall '!for remote in $(git remote); do git pull "$remote"
    

Git 瘦身

.git文件很大了,由于之前不小心提交了大文件,即便删除,仍然有记录
python --version
pip install git-filter-repo

git rev-list --objects --all | sort -k 2 > all-files.txt
git verify-pack -v .git/objects/pack/pack-*.idx | grep blob | sort -k3 -n | tail -n 20 > big-blobs.txt

for SHA in $(cut -f 1 -d\  < big-blobs.txt); do
  grep $SHA all-files.txt;
done > big-files.txt

git filter-repo --force --paths-from-file paths-to-delete.txt --invert-paths

git reflog expire --expire=now --all
git gc --prune=now --aggressive

git push origin --force

学生认证

登github用的 watt toolkit
https://www.cc98.org/topic/6188896/1#1

Please indicate the source when reprinting. Please verify the citation sources in the article and point out any errors or unclear expressions.