>>>>>>>>>>>>>>>>>>>>>update for 2014-11-20<<<<<<<<<<<<<<<<<<<<<<<<<<<
http://backlogtool.com/git-guide/cn/(猴子都能懂的git教程)
怎样使用GitHub--知乎(干货)
-------------------------2014-11-15--------update--------以上--------------------------
------------------------------------一以下----------------------------------------
先大体的学习以下,掌握基本的用法,在实践中慢慢的熟悉!
ls -F $(dirname $(dirname $(git --html-path)))/gitweb
echo $(dirname $(dirname $(git --html-path)))/gitweb
-----------------------系统配置------------------------------------
git config --global color.ui true //开启颜色支持
git config --global core.quotepath false //支持utf-8编码
git config --global user.name cuiyaonan
git config --global user.email cuiyaonan2000@163.com
-----------------------系统配置------------------------------------
----------------------------------grep内容搜索---------------------
git grep "" //git中的文档内容搜索
----------------------------------grep内容搜索---------------------
mkdir -p a/b/c
git rev-parse --git-dir //显示.git目录所在位置 版本库
git rev-parse --show-toplevel //显示工作区根目录
git rev-parse --show-prefix //相对工作区的相对目录
git rev-parse --show-cdup //后退到工作区的根的深度 显示../../类似的情况
git rev-parse master //显示对应的提交ID
git rev-parse HEAD //显示对应的提交ID
git rev-parse refs/heads/master //显示对应的提交ID
--------------------------------config属性文件操作-------------------------------------
git config -e [-global | |--system] //git中查看config 配置文件的命令是
git config core.bare //显示 core.bare的值
git config core.bare true //修改core.bare中的值
git config --unset --global user.name// 删除全局变量中的user.anme的值
--------------------------------config属性文件操作-------------------------------------
-------------------------------------commit提交操作---------------------------------------
git commit -a //对所有的 修改删除直接提交.条过git add 命令 但是对违背追踪的文件无效
git commit --allow-empty -m "empty commit" //空提交
git commit --amend --allow-empty --reset-author// amend:对刚刚的提交进行修补, reset-author将坐着的id同步进行修改
-------------------------------------commit提交操作---------------------------------------
------------------------------------------日志操作-------------------------------------------
git log --pretty=fuller //显示最全的日志
git log --stat // stat 可以看到每次提交的文件变更统计
git log --pretty=oneline // 精简显示日志
git log --graph --oneline //比上面的更精简些
git log --pretty=raw //日志的详细输出
git log --pretty=raw --grap <id> //根据id显示该链路 参见P85
git log --oneline --decorate -4 //decorate 同是显示里程碑 ,-4表示显示前4条记录
------------------------------------------日志操作-------------------------------------------
-------------------------当前状态status命令------------------------------
git status //显示状态
git status -s //精简显示状态
git status -s -b //精简显示内容. b表示显示当前工作分支
-------------------------当前状态status命令------------------------------
------------------------------diff对比命令-------------------------------------
git diff //工作区与暂存区比较
git diff HEAD //工作区和分支比较
git diff --cached //暂存区 和 版本库中的比较
------------------------------diff对比命令-------------------------------------
--------------------------------相关文件地址---------------------------------------
.git/config // 配置文件保存地方
.git/index //索引文件保存地方 建立了和对象库中的对象实体建的对应关系 目录树
HEAD 指向 refs/heads/master 指向 master
--------------------------------相关文件地址---------------------------------------
-----------------------------------checkout命令----------------------------------
git checkout -- [文件名称] //暂存区的全部文件或者指定文件,替换工作区的文件.删除工作区添加到暂存区的改动
关于分离头和 checkout 命令详解参见P97
-----------------------------------checkout命令----------------------------------
--------------------------------------reset命令-------------------------------------
git reset HEAD // 暂存区目录树会被master重写,工作区不受影响
git reset --hard HEAD^ //暂存区目录树会被master重写,工作区不受影响(如果已经跟版本库同步则受到影响) hard会破坏工作区未提交的改动慎用
git reset --hard master@{2} //恢复以前的2步骤. 详见P96
--------------------------------------reset命令-------------------------------------
git reflog show master | head -5 //显示非 裸版本库 的日志前5条
-------------------------------------关于stash工作区命令-------------------------------------------------
git stash //保存当前工作进度 所有工作区尚未提交的改动,包括咋存取都不见了.
git stash list//显示以保存的工作进度
git stash pop //从最近保存的进度中进行恢复
stash详情见P108
git branch //显示当前工作分支
-------------------------------------关于stash工作区命令-------------------------------------------------
-----------------------------------------------根据id展示对象类型,及内容命令-------------------------------
git cat-flie -t <id> //根据id显示对象类型
git cat-file -p <id> //根据id 显示对象内容
-----------------------------------------------根据id展示对象类型,及内容命令-------------------------------
-------------------------------------------------------关于里程碑----------------------------------------
git tag -m 'say bye-bye to all previous practice' old_practice
ls ./git/refs/tags/old_practice
git re-parse old_practice
git describe
里程碑详情见P234
-------------------------------------------------------关于里程碑----------------------------------------
--------------------------------------------------------关于删除文件-----------------------------------
git rm --cached <file> // 直接从暂存区删除文件 工作区不做出改变
git rm 文件 //本地 暂存区同时删除 多个文件以空格隔开
git clean -fd //删除工作区中尚未放入版本库中的文件和目录
git clean -nd //显示那些本地的会被删除
git add -u //本地文件的变更(删除,修改)不包括添加,全部直接记录到暂存区,可以直接commit
--------------------------------------------------------关于删除文件-----------------------------------
-------------------------------------关于add命令--------------------------------------------------------
git add -u //本地文件的变更(删除,修改)不包括添加,全部直接记录到暂存区,可以直接commit
gtt add -i //根据数字进行选择
git add -A //将所有的新增文件及修改文件全部添加到暂存区,可以直接commit
git add . 当下所有的文件添加到暂存区
-------------------------------------关于add命令--------------------------------------------------------
----------------------------------------------恢复之前删除的文件----------------------------------
git cat-file -p HEAD~1:welcome.txt > welcome.txt //恢复上一个历史版本中的welcome.txt文件
git show HEAD~1:welcome.txt > welcome.txt //恢复上一个历史版本中的welcome.txt文件
git checkout HEAD~1 -- welcome.txt //恢复上一个历史版本中的welcome.txt文件
git add -A //将所有的新增文件及修改文件全部添加到暂存区,可以直接commit
----------------------------------------------恢复之前删除的文件----------------------------------
-------------------------------------------------------------显示版本库中的文件----------------------------------------------
git ls-tree -l HEAD // 显示版本库中的目录树 l 表示显示文件大小.关于暂存区的目录树参见P79中
git ls-files --with-tree=HEAD^ //显示暂存区中上一个版本中的文件
git cat-file -p HEAD^:welcome.txt // 显示暂存区中上一个历史版本中 welcome.txt中的内容
-------------------------------------------------------------显示版本库中的文件----------------------------------------------
------------------------------------------mv移动命令--------------------------------
git mv welcome.txt readme //将welcome.txt 改名为 readme .相当于 rm + add 命令集合;
------------------------------------------mv移动命令--------------------------------
git rev-list HEAD|wc -l //统计总共提交了多少次
----------------------------------------悔棋操作----------------------------------------------------------
git commit --amend -m 'go back b' 修改备注
----------------------------------------悔棋操作----------------------------------------------------------
------------------------------------------反转提交----------------------------------------------------
git revert HEAD|ID //在不改变提交的前提下,撤销其对某些操作的修改
------------------------------------------反转提交----------------------------------------------------
--------------------------------------------变基操作----------------------------------------------------
P167 没搞明白
--------------------------------------------变基操作----------------------------------------------------
---------------------------------------------对等工作区-------------------------------------
git clone /path/to/my/workspace/demo/ /path/to/my/workspace/demo-backup //对等工作区克隆
git push /path/to/my/workspace/demo-backup/ //上有工作区推送 克隆工作区报错.必须在克隆工作区 pull
git rmote -v //在克隆库中查看 上有版本库的信息 也可以在.git/config中查看
---------------------------------------------对等工作区-------------------------------------
--------------------------------------------裸版本库-----------------------------------------------
git clone --bare 上有仓库地址 裸版本地址 //创建裸版本仓库
git push 裸版本地址 //上游仓库中推送数据到 裸版本地址
git --git-dir=裸版本地址 log --oneline //应为不能在裸版本目录下直接执行所以要添加参数 --git-dir
--------------------------------------------裸版本库-----------------------------------------------
-----------------------------------------------初始化工作区--------------------------------------
git init 初始化工作区目录,可以是绝对也可以是相对目录
git init --bare 裸版本库地址
git push 裸版本库地址 master:master //如果第一次向裸版本库中推送 需要加上master:master
-----------------------------------------------初始化工作区--------------------------------------