20210502# 【git】
@
使用经验
git管理空目录
默认情况下,git会忽略空目录,所以如果想要增加一个空目录,可以在其中添加一个
.gitkeep
文件
软件安装
相关问题
git for windows下的Filename too long
从github克隆一个项目下发出现了错误:
git有可以创建4096长度的文件名,然而在windows最多是260,因为git用了旧版本的windows api,为此踩了个坑。
解决
打开git命令行:
git config --global core.longpaths true
–global是该参数的使用范围,只想对本版本库设置该参数,上述命令中去掉–global
.gitignore文件
gitignore说明
在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。
此时我们可以创建一个名为 .gitignore
的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。
注意:在windows下可以创建文件名为.gitignore.
,保存之后系统会自动重命名为 .gitignore
格式规范
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略
- 可以使用标准的 glob 模式匹配
- 匹配模式最后跟斜杠(/)说明要忽略的是目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反
glob模式
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,匹配规则如下:
- "*":星号匹配零个或多个任意字符
- []:匹配任何一个列在方括号中的字符,如[ab]匹配a或者匹配b
- "?":问号匹配一个任意字符
- [n-m]:匹配所有在这两个字符范围内的字符,如[0-9]表示匹配所有0到9的数字
匹配示例
- logs/:忽略当前路径下的logs目录,包含logs下的所有子目录和文件
- /logs.txt:忽略根目录下的logs.txt文件
- *.class:忽略所有后缀为.class的文件
- !/classes/a.class:不忽略classes目录下的a.class文件
- tmp/*.txt:只忽略tmp目录下的.txt文件
- **/foo:可以忽略/foo, a/foo, a/b/foo等
定义全局的.gitignore文件
除了可以在项目中定义.gitignore文件外,还可以设置全局的.gitignore文件来管理所有Git项目的行为。
这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。
可以在任意目录下创建相应的.gitignore文件,然后再使用以下命令配置Git
git config --global core.excludesfile ~/.gitignore
.gitignore规则不生效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。所以一定要养成在项目开始就创建.gitignore文件的习惯。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m "msg"
java开发通用模版
#java
*.class
#package file
*.war
*.ear
*.zip
*.tar.gz
*.rar
#maven ignore
target/
build/
#eclipse ignore
.settings/
.project
.classpatch
#Intellij idea
.idea/
/idea/
*.ipr
*.iml
*.iws
# temp file
*.log
*.cache
*.diff
*.patch
*.tmp
# system ignore
.DS_Store
Thumbs.db
Python开发通用模版
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / packaging
.Python
env/
build/
dist/
*.log
# pyenv
.python-version
# dotenv
.env
# virtualenv
.venv/
venv/
ENV/
# VSCode settings
.vscode
# IDEA files
.idea
# OSX dir files
.DS_Store
# Sublime Text settings
*.sublime-workspace
*.sublime-project
Python模板(gitee初始化自带)
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
Go开发通用模版
# Build
bulid/
*.exe
# dotenv
.env
# venv
/vendor/
# Log
*.log
# VSCode settings
.vscode
# IDEA files
.idea
# OSX dir files
.DS_Store
# Sublime Text settings
*.sublime-workspace
*.sublime-project