Git技巧
1. .gitignore屏蔽A文件夹下除B以外的文件¶
假设以下目录结构,需要屏蔽除koko_learn外的文件夹
src
├─1012deal
├─FEM
└─koko_learn
在.gitignore中:
src/*
!src/koko_learn/
Warning
如果使用了!src/koko_learn/**,则会导致src/koko_learn/base.py等文件保持在被屏蔽的状态
(koko-learn) PS D:\Projects\PycharmProjects\koko-learn> git add .\src\koko_learn\base.py
hint: Use -f if you really want to add them.
hint: Disable this message with "git config advice.addIgnoredFile false"
2. 删除远程分支上的文件¶
当设置.gitignore前就提交了某文件,在配置后不会自动删除远程分支上的文件
以src/koko_learn/base.py和src/koko_learn/__pycache__为例:
# git库将删除文件,本地文件将保留
git rm -r --cached .\src\koko_learn\__pycache__\
git rm --cached .\src\koko_learn\base.py
# 提交修改
git commit -m ":heavy_minus_sign: 删除.gitignore缓存"
# 推送
git push
3. 强制覆盖远程分支¶
- 重置本地分支到远程分支
git fetch origin
git reset --hard origin/<branch_name>
- 强制推送本地分支到远程分支
git push --force origin <branch_name>
4. 强制回滚到某次提交¶
将本地分支重置到指定提交
# 硬重置,将丢弃工作目录中所有修改
git reset --hard <commit_hash>
# 软重置,将保留工作目录中的更改
git reset --soft <commit_hash>
# 混合重置,默认,保留工作目录修改,放弃暂存区的修改
git reset <commit_hash>
强制推送到远程仓库
git push --force origin <branch_name>