目录

GIT

一、为什么要使用代码版本控制系统

二、GIT 与 SVN 的区别

三、GIT 资料

Installation

Tools

Usage

Ignore

Submodule

Git补丁

接手旧项目时的git操作

git-commands-before-reading-code

  1. 哪个文件改动最频繁: git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -20
  2. 谁维护的项目: git shortlog -sn --no-merges
  3. 哪些文件发生BUG多: git log -i -E --grep="fix|bug|broken" --name-only --format='' | sort | uniq -c | sort -nr | head -20
  4. 这个项目是在加速发展还是正在走向衰亡?(按月提交数排行) git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c
  5. 项目团队需要多频繁地“救火”? git log --oneline --since="1 year ago" | grep -iE 'revert|hotfix|emergency|rollback'

Tips

server: gitolite

Git 原理

搞懂原理后发现, git 是一个典型的, 以方便实现而设计出的工具. 所以其并没有充分考虑使用的体验. 虽然它强大, 效率高, 但对使用者来说, 命令的正交性不强这一点, 就造成了使用者需要记住大量单独的命令. 考虑找个或弄个简化版的本地版本控制系统, 或者做个git的命令包装. 这篇文章不错:https://www.highflux.io/blog/what-makes-git-hard-to-use . 这个可借鉴:https://github.com/jj-vcs/jj .