celery笔记 jieba RPC 服务 http2 vs http1 python发送邮件 gitbook 笔记 docker运行 pyppeteer 百度/腾讯 ocr 试用 页面元素选择 python pickle 实践 k3s 安装加速 FFmpeg 使用总结 Systemd 教程 mysql 1366 错误解决 docker-compose 笔记 sqlite 使用总结 百度网盘命令行工具 bypy 阿里云 PAI-EAS 试用报告 gpt2中文预训练模型试用 文本生成资料汇总 使用 tracemalloc 分析 python 内存使用情况 spark 集群试用 openresty使用笔记 mac下 python 报错 CERTIFICATE_VERIFY_FAILED docker-compose 安装方法 系统代理 mac 下安装 adb scrapy项目作为工具库使用 charles over proxy 使用 markdown 制作 ppt docker挂载目录异常 flask 笔记 wsl2 使用体验 nginx 配置 mac 配置 发布自己的 python 包 selenium + chrome 全页面截图 mongo ORM 笔记 supervisor 使用总结 h5py性能测评 privoxy实现PAC代理上网 session请求示例 ssh笔记 python小技巧 docker学习笔记 tornado使用总结 再读《MongoDB权威指南》 tornado文件上传服务 mongo学习笔记 python异步服务器测试 No module named 'Crypto' on Mac mac中安装python3.5 py3.6环境下numpy C扩展出错 mtcnn读书笔记 shell 学习笔记 install ubuntu18.04 定时备份linux系统的history记录 asyncio异步请求示例 golang setting git使用笔记 Ubuntu16.04下配置python3环境 将Ubuntu16.04升级为Ubuntu18.04(development branch) Ubuntu16.04下源码安装python3.6 virtualenv中安装anaconda模块 基于sqlite3实现数据缓存 修复colaboratory中tensorflow的bug 安装docker-compose docker引起的空间不足 CNN可视化研究 ubuntu16.04中安装wine-qq 在ubuntu16.04中安装wine3.0+winetricks ssh over socks5 python删除文件或目录 shadowsocks+privoxy设置本地代理 python下载大文件的方法 解决python中遇到的乱码问题 修改 ubuntu & windows双系统中系统启动顺序与等待时间 python3安装mysql ubuntu环境变量设置 python 后台程序实现

git使用笔记

2018年10月07日

git使用笔记

1.old mode 100755 new mode 100644

git config core.filemode false

2.换行符问题

参考

原因: git为了统一入库文件统一使用’\n’为换行符. 检出时根据配置转换换行符; 入库时自动转为’\n’. 但在中文环境中,该机制出问题.

解决: 配置参数,强制保持换行符统一.

git 中有三个参数于换行符有关: eol: 设置工作目录中文件的换行符,有三个值 lf, crlf 和 native(默认,同操作系统) autocrlf:

  • true 表示检出是转换CRLF, 提交时转换为 LF
  • input 表示检出是不转换,提交时转换为 LF
  • false 表示不做转换

safecrlf:

  • true 表示不允许提交时包含不同换行符
  • warn 则只在有不同换行符时警告
  • false 则允许提交时有不同换行符存在

编辑 /.git/config 文件

[core]
    fileMode = false
    autocrlf = true
    safecrlf = true

create .gitattributes file with content:

# Set the default behavior, in case people don't have core.autocrlf set.
* text eol=lf
core.autocrlf=true
core.fileMode=false

fore change crlf if found error before git commit

 python -c "from pytools import git_crlf_helper as g;g()" -d . -t lf -i *.py -e *.pyc

3.删除历史记录

  • 参考
  • 删除历史记录中的 path-to-your-remove-file
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all
  • 推送至服务器
    git push origin master --force --all
    

4.子模块

  • 添加子模块
git submodule add https://github.com/tensorflow/tensorflow sub/tensorflow
  • 更新所有子模块
git submodule foreach git pull

5.merge commits

  • merge all commits into one on a branch
git merge --squash feature-branch && git commit -m "all commits"

6.github without password

  • set ssh key
  • cd ./pyxtools/ && git remote set-url origin git@github.com:frkhit/pyxtools.git

7.proxy

  • set proxy
git config --global https.proxy socks5://127.0.0.1:1080
git config --global http.proxy socks5://127.0.0.1:1080
  • clear proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
  • or, edit ~/.gitconfig

8.multi user

实现不同项目使用不同用户, 关键是设置gitconfig文件

全局配置:

vim ~/.gitconfig

项目配置

vim .git/config

9.拉取所有分支

ref: https://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches
author: Wookie88

(git --no-pager branch -r | grep -v "\->" | while read remote; do git --no-pager branch --track "${remote#origin/}" "$remote"; done) && git fetch --all && git pull --all

10.删除所有本地分支

参考:GIT本地删除除master以外所有分支

git checkout master && (git --no-pager branch | grep -v "\<master\>" | xargs git branch -D)

Note:

  • 要求无修改
  • 本地分支仅保留 master

更新所有分支:

git checkout master && (git --no-pager branch | grep -v "\<master\>" | xargs git branch -D) && (git --no-pager branch -r | grep -v "\->" | while read remote; do git --no-pager branch --track "${remote#origin/}" "$remote"; done) && git fetch --all && git pull --all

11.标签操作

  • 新建标签: git tag <tag_name>
  • 删除标签: git tag -d <tag_name>
  • 查看所有标签: git tag --list
  • 将标签推送到远程服务器: git push --tags
  • 删除远程标签: git push origin --delete tag <tag-name>

12. ssh 代理

当使用类似 git clone git@github.com:frkhit/frkhit.github.io.git 的方式连接 git 服务器时,~/.gitconfig 中设置的代理便不能使用。

正确的方法是, 在 ~/.ssh/config 增加配置:

Host github.com
   HostName github.com
   User git
   # http proxy
   # ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=9999
   # socks5
   ProxyCommand nc -v -x 127.0.0.1:1080 %h %p

执行 git 命令访问 github.com, 会有类似这样的提示:

Connection to github.com port 22 [tcp/ssh] succeeded!