Git备忘

678 查看

原文见:http://wyh.life/article/2014/07/15/git

配置

git config --global user.name "Your Name"
git config --global user.email "your email"
git config --global color.ui true
git config --global core.editor vim

# 为常用命令设置别名
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch

查看差异

git diff      # 工作区和暂存区比对差异
git diff HEAD # 工作区和版本库比对差异
git diff tag1:filename tag2:filename

分支操作

git branch -v   # 显示分支信息并包含最后一次提交
git branch -a   # 显示本地分支及远程分支
git branch -va

git branch -merged  # 查看哪些分支已合并到当前分支
git ls-remote       # 查看远程仓库中引用
git show-ref        # 查看本地引用

git grep xxx    # 相比于grep可以实现跨分支查找

远程分支

Remote branch 是对远程仓库状态的索引,是一些无法移动的本地分支,仅在Git网络活动时才更新
远程分支就像书签,提醒你上次连接远程仓库时上面各分支的位置。使用 远程仓库名/分支名 表示

一次 git clone 会建立本地 master 分支和远程 origin master,它们都指向 origin/master 分支的最后一次提交

# 推送至远程分支
git push {远程仓库名} {分支名}

# 抓取远程分支(仍无法本地编辑该远程仓库)
git fetch origin

即你不会有一个新的 serverfix 分支,有的只是一个无法移动的 origin/serverfix 指针

# 将远程仓库内容合并到当前分支
git merge origin/serverfix

# 得到一份自己的 serverfix
git checkout -b serverfix origin/serverfix

查看日志

git log --graph --oneline
git log -p          # 显示具体内容
git log --name-only # 只显示更改的文件名

git reflog          # 挽回错误的重置
git reset HEAD@{3}

git reflog show master  # 显示某一分支指向的变迁

# pretty log
git log --graph --date=short --pretty=format:"\%x1b[31m\%h\%x09\%x1b[32m\%d\%x1b[0m\%x20\%ad \%s
git log --stat --abbrev-commit --pretty=short --graph

暂存区操作

git reset HEAD          # 暂存区目录树被master分支指向的目录树替换,工作区不影响
git rm --cache {file}   # 直接从暂存区删除,工作区不影响
git checkout .

git clean -fd
git add -A

git reset --filename    # 仅将filename的修改撤销,git add filename反向操作

git rm                  # 删除动作加入到了暂存区,在提交后执行了删除
git checkout HEAD^ --hello.txt  # 撤销删除动作

git mv hello.txt new.txt        # 重命名操作
git reset HEAD                  # 撤销重命名操作

版本库导出

# 类似svn export
git archive --format zip --output /full/path/to/zipfile.zip master

Git Extras 工具介绍

原文见:http://wyh.life/article/2014/07/15/git/

Git-extras 是一套Git扩展工具集,提供了一些便捷实用的功能

安装
# alex-yh99 Fork:

$ git clone http://github.com/alex-yh99/git-extras.git
$ sudo make install
使用

对当前Project生成概要信息 git summary

project  : git-extras
repo age : 10 months ago
commits  : 163
active   : 60 days
files    : 93
authors  :
97   Tj Holowaychuk          59.5%
37   Jonhnny Weslley         22.7%
8   Kenneth Reitz           4.9%
5   Aggelos Orfanakos       3.1%
3   Jonathan "Duke" Leto    1.8%
2   Gert Van Gool           1.2%
2   Domenico Rotiroti       1.2%
2   Devin Withers           1.2%
2   TJ Holowaychuk          1.2%
1   Nick Campbell           0.6%
1   Alex McHale             0.6%
1   Jason Young             0.6%
1   Jens K. Mueller         0.6%
1   Guillermo Rauch         0.6%

查看版本库一些活跃的修改 git-effort --above <above_num>

file                                          commits    active days

mongoose.c................................... 380        205
README.md.................................... 73         45
mongoose.h................................... 73         56
Makefile..................................... 65         50
main.c....................................... 55         42
test/unit_test.c............................. 44         37
test/test.pl................................. 42         37
UserManual.md................................ 27         15
examples/chat.c.............................. 16         13