Git 学习笔记

Git 学习笔记

Git进阶_苏玲玩转Git三剑客学习笔记

课程综述

为什么Git

  • GitHub是全球最大的开源社区,里面存放了很多优秀的开源项目的代码
  • GitLab的社区版本现在也被国内很多知名的互联网企业当作是代码管理的平台
  • GitHub和GitLab这两个平台在整个DevOps盛行的大环境中,他们不仅仅提供了代码管理的功能,他们还向外扩展提供了整个DevOps全生命周期的全流程的解决方案

怎么学习

  • 掌握Git
  • 熟悉GitHub和GitLab这两个平台的主要功能
  • 通过简单的项目走一遍团队协作、代码review和分支集成、以及整个持续交付的过程

收获什么

  • 掌握Git的基本命令
  • 掌握Git的工作原理
  • 能基于GitHub和GitLab这两个平台做团队协作、代码review和分支集成的活动
  • 了解如何在GitHub和GitLab上如何开展持续交付活动

总结

常用命令

No. 常用场景 命令
1 怎么删除不需要的分支 git brach -d branch_name
2 怎么修改最新commit和message git commit --amend
3 怎么修改老旧commit和message git rebase -i commit_father_id
4 怎么把连续的多个commit整理成1个 git rebase -i commit_father_id
5 怎么把间隔的几个commit整理成1个 git rebase -i commit_father_id
6 怎么比较暂存区和HEAD所含文件的差异 git diff --cached
7 怎么比较工作区和暂存区所含文件的差异 git diff
8 如何让暂存区恢复和HEAD的一样 git reset HEAD
9 如何让工作区的文件恢复为和暂存区一样 git checkout
10 怎么消除暂存区部分文件的修改 git reset HEAD -- file1 file2
11 消除最近的几次提交 git reset --hard commit_id
12 看看不同提交的指定文件的差异 git diff commit-id1 commit-id2 path-to-filename
13 正确删除文件的方法 git rm file
14 开发中临时加塞了紧急任务怎么处理 git stash
15 如何指定不需要Git管理的文件 touch .gitignore
16 如何将Git仓库备份到本地 git clone --bare file://[local_path] [backup_name]

git.config

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
editor = vim
excludesfile = ~/.gitignore
autocrlf = true
[remote "origin"]
url = git@github.com:BoobooWei/DBA_Git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
amend = commit --amend
amendf = commit --amend --no-edit
br = branch
ct = commit
co = checkout
cp = cherry-pick
df = diff
ds = diff --staged
l = log
lg = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)�� %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
lp = log --pretty=oneline
sa = stash apply
sh = show
ss = stash save
st = status

[color]
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "status"]
added = yellow
changed = green
untracked = cyan
[color "diff"] # ��ִ��diff����ʱ��ϵͳչʾ����ɫ
meta = yellow
frag = magenta bold
commit = yellow bold
old = red bold
new = green bold
whitespace = red reverse
[color "diff-highlight"]
oldNormal = red bold
oldHighlight = red bold 52
newNormal = green bold
newHighlight = green bold 22

[credential]
helper = cache --timeout=28800

活跃统计

git log --date=iso | perl -nalE 'if (/^Date:\s+[\d-]{10}\s(\d{2})/) { say $1+0 }' | sort | uniq -c|perl -MList::Util=max -nalE '$h{$F[1]} = $F[0]; }{ $m = max values %h; foreach (0..23) { $h{$_} = 0 if not exists $h{$_} } foreach (sort {$a <=> $b } keys %h) { say sprintf "%02d - %4d %s", $_, $h{$_}, "*"x ($h{$_} / $m * 50); }'


00 - 3 ********
01 - 2 *****
02 - 1 **
03 - 0
04 - 0
05 - 0
06 - 1 **
07 - 0
08 - 0
09 - 3 ********
10 - 4 ***********
11 - 4 ***********
12 - 2 *****
13 - 11 ********************************
14 - 12 ***********************************
15 - 5 **************
16 - 9 **************************
17 - 2 *****
18 - 4 ***********
19 - 0
20 - 0
21 - 3 ********
22 - 17 **************************************************
23 - 4 ***********