git 命令统计

1. 配置

一、如何收获localStorage的盈余容量

在H5大行其道的先天,localStorage(本地存储)对每一个前断攻城师来说都不太陌生。同时localStorage也给大家带来了特大的方便,不用于cookies的手紧,localStorage的存储量依然很有理的。

是因为浏览器的差别性,导致我们需要对localStorage中的内容做出一部分取舍。而遵照当前的市场上浏览器对loaclStorage的包容性来看,最佳的大大小小是2.5M左右。怎样获取localStorage的容量大小,大概接触过localStorage都会遇到的如此一个题材。

localStorage 中贮存的是字符串,遵照这一口径,我们可以透过取出所有的localStorage的始末,而其长度就是大大小小。具体代码如下:

 1 (function(){
 2     if(!window.localStorage) {
 3         console.log('浏览器不支持localStorage');
 4     }
 5     var size = 0;
 6     for(item in window.localStorage) {
 7         if(window.localStorage.hasOwnProperty(item)) {
 8             size += window.localStorage.getItem(item).length;
 9         }
10     }
11     console.log('当前localStorage剩余容量为' + (size / 1024).toFixed(2) + 'KB');
12 })()

 

二、怎么样拿到localStorage最大容量

通过上边的分析,其实思路基本是一致的,都是透过字符长度来判断。

 1  (function() {
 2    if(!window.localStorage) {
 3    console.log('当前浏览器不支持localStorage!')
 4    }    var test = '0123456789';
 5    var add = function(num) {
 6      num += num;
 7      if(num.length == 10240) {
 8        test = num;
 9        return;
10      }
11      add(num);
12    }
13    add(test);
14    var sum = test;
15    var show = setInterval(function(){
16       sum += test;
17       try {
18        window.localStorage.removeItem('test');
19        window.localStorage.setItem('test', sum);
20        console.log(sum.length / 1024 + 'KB');
21       } catch(e) {
22        console.log(sum.length / 1024 + 'KB超出最大限制');
23        clearInterval(show);
24       }
25    }, 0.1)
26  })()

投机写了一个检测浏览器localStorage的最大容量的页面,麻雀虽小,但五脏俱全
:lol:。

git config –global user.name “your name”

git config –global user.email  mail@box.com

git config –global color.ui true

git config –global core.editor vi

git config –global alias.lol “log –graph –all”   
设置alias,这样lol就是自己新的吩咐了。

 

2.中坚使用

1.出示当前的安排音讯

git config –list

 

  1. 创建repo

从其余地点拿到

git clone git://git.kernel.org/pub/scm/git/git.git

 

 

祥和建立

mkdir test

cd test

git init

 

  1. 显示状态

git status

 

  1. commit

git add file.1 file.2
先扩充文(加文)件,扩大到index中。那样commit的时候才精通要commit哪些文件。

或者

git add -p   用来interactively选取什么样改观需要被commit

git commit -m “log message”

 

或者

git commit -a 
自动检查应该commit什么文件。要是是新增的文本,仍旧要利用git add来添加。

 

  1. 显示以前的办事

git log 输出格式

git log

git log -p       显示patch

git log –stat   突显改动的一个总括

git log –graph  只展示当前branch的

git log –graph –all    展现所有branch的

git log –graph –all –decorate 显示branch的名字

 

git log –pretty=oneline, short, full, fuller  输出的log 形式各异

git log –pretty=format:”%h – %an, %ar : %s”   依照指定的格式输出。

有关–pretty的此外选取和具体的format格式,参考 git log –help中PRETTY
FORMAT这一部分。

 

git log –follow file.c

其一效应很风趣,尤其是当file.c被挪动后。

平常大家会活动某个文件到某个目录下。假诺这样做,git
log是无法显示目录移动前的笔录的。

这就增长 –follow吧。

 

git log的筛选

git log -2 -p   显示近来两遍commit的log 和 diff

git log –author=”Author Name” 筛选特定作者的log

git log –since=”2012-2-23″ –before=”2012-2-24″ 筛选时间段

git log –grep=”key word” 在commit 的message中查找关键字

git log branch –not master 查看在branch上的,但不在master上的记录。 

 

git log -S”func_name”  查找某个字符出现,或者移出的commit。
比如可以搜寻一个函数是如何时候增长,或者去除的。

 

git show sha1  
这么些sha1是每个commit的sha1,这样呈现某个commit的完全新闻,包括diff

 

  1. 废除改动

git checkout — file.1

撤消了file.1的这一次改变。只是注销了从未staged的改动.

中间的 — 阐明了这是一个文本 而不是一个branch的名字

 

git reset –hard HEAD

裁撤了所有没有commit的改观,包括了stage的和尚未stage的。

这条命令的结果一致

git checkout HEAD file.1

包括了staged 和没有staged的都会去掉。

 

有时我们发现,从前做个一个commit有题目,不想要,想要去掉。

git revert HEAD     
自动得重新做一个commit,将最终五回的commit重返回来。

git revert HEAD^     自动得重新做一个commit,将最后第二次的commit
重返回来。

 

  1. 删去一个commit

git reset –hard HEAD~1

删除了如今的commit

 

  1. 修改近日的一个commit

git commit –amend

 

7.出示所做的变动

git diff

呈现所有的转移。 没有add到index中的。

 

git diff –staged或者 git diff –cached

显示staged改动,也就是add的东东,也就是即将commit的东东。

 

git diff commit1 commit2

显示这多少个commit之间的变动, 从commit1到commit2的变动。

 

git diff commit1..commit2

五个点,效果跟下面的如出一辙

 

git diff commit1…commit2

两个点,表示的是暴发在commit2支行,一贯到commit1和commit2共同五伯的变迁。

 

git blame -C file1.c

呈现文件具体的变动。。。。恩,好像是用来找是何人的错?

 

git blame -Ln,m file1.c 

查看n,m两行间的改观。

 

git blame commit1~1 -Ln,m file1.c

翻看commit1版本前的改动. 追查在此之前的log。

 

git blame commit1~1 -Ln,m — old/file.c

倘若这些文件被重命名过,或者移动过岗位,就要输入旧的文件的名字。

再就是肯定要丰硕 — , 一定。

 

  1. 去除某个文件

git rm file-name

从库和脚下的working directory中删掉那多少个文件

git rm –cached file-name

只从库中剔除,保留当前的当地文件。

 

  1. 重命名一个文件

git mv file file-new

 

  1. 应用patch

git apply patch-file

诸如此类做从patch-file中采纳这么些patch。 效果和patch命令类似。 

然则好处是,git
apply要么成功,要么不成事。不想patch,有可能有部分的patch打上了,不过有些没有打上。

git apply后,并不曾自动生成一个commit. 

 

git apply –check  可以用来检测这个patch 是不是会发生顶牛或者败北。

 

git am patch-file

这是专门为git 设计的命令。 patch-file是经过git format-patch 生成的。 

里头带有了作者音讯和省略描述。

git am后,会自动的转移一个commit.

 

git am –resolved

git am 过程中或许会有conflict. 如过遭逢conflict, 这就需要手动修改code,
git add 后

用git am –resolved 

 

  1. git 制作patch

具体步骤写在了 http://hovertree.com/menu/git/

 

3. commit range

在git中,我们日常需要制订一个commit的限定,比如git
log中,可以展现某范围内的改动。

除此之外man gitrevisions, 在这些网站上也有不过的描述,尤其是对 double dot 和
triple dot

http://git-scm.com/book/ch6-1.html

http://stackoverflow.com/questions/462974/whats-the-difference-between-and-in-git-commit-ranges

而且这种语法,在git log和git diff两种意况下,有例外的意义.

 更多git文章:http://hovertree.com/menu/git/

在git log中, 

git log ^r1 r2
代赞誉显从r2到root,可是去掉r1到root中和r2到root有再次的。

这多少个也足以代表为 git log r1..r2. 

 

git log r1…r2 意味着 彰显从r1到root, r2到root,可是去掉他们共有的一部分。

 

自己如此敞亮, 前一种展现的是树上的一个分层。而后一种展现了六个支行。

 

git diff中

git diff目标是相比两个commit之间的区分。

 

git diff A B 和 git diff A..B 是同等的,就是显示这五个以内的界别。

 

git diff A…B 和 git diff $(git-merge-base A B) B一样。 就是显得
在B这些分支上,做了哪些改观。

                      有时候那个命令是,git merge-base A B

 

在一个branch上,但不在另一个branch上

git log local_copy ^kernel 

这般能够再merge前,看看都有什么东西要commit.

那多少个命令用来看,在local_copy branch上,可是不在kernel branch上的。 

 

 

 

 

4. Branch

  1. 显示branch

git branch

git branch -v 显示详细点的音讯

git branch –merged

 

  1. 创建branch

git branch testing

或者

git checkout -b new_brach

这么新建并且切换来了new_brach上

 

再有一种创设branch的不二法门是

git branch branch_name  b42294309188d57bf3398ed35660170a237d8c0a

瞩目,这背后这一长串的就是各类commit的sha1码。

 

  1. 切换来某个branch

git checkout testing

 

  1. 图形化彰显branch信息

gitk

gitk –all

 

  1. merge

先转到要merge到的branch,如

git checkout master

诚如都会merge到master上。

 

接下来调用

git merge testing

如此就把testing branch上的更改merge过来了。

 

  1. 删除branch

好了,这个branch不用了,删掉吧

git branch -d testing

 

  1. 处理conflict

在merge的长河中一般会遭逢conflict.

先用git status查看哪些文件发出的冲突。

可以逐一修改文件,也可以用git mergetool 来举行修改。

当所有的都修改好, 使用git commit。

 

8。 查看有哪些branch merge进来了,哪些没有

git branch –merged

git branch –no-merged

比如说我们checkout 到 master,用–no-merged
可以看看还有哪位branch的改观没有到master上。

 

  1. Stash

git stash 用来备份当前工作区的内容。
从方今的一次提交中读取相关内容,让工作区保证和上次付出的内容千篇一律。

可以屡屡用到git stash来保存当前的修改。

 

git list可以看出一共保存了多少次。

linux-2.6$ git stash list
stash@{0}: WIP on 3.0: 02f8c6a Linux 3.0
stash@{1}: WIP on pci-fix: 79eefa4 Optimize the resource overlap check
stash@{2}: WIP on pci-fix: 02f8c6a Linux 3.0
stash@{3}: WIP on 3.0: 02f8c6a Linux 3.0

git stash save “name”

git stash

这六个都是保留当前的变动, 假使有name则可以添加一个惠及辨识的标签。

 

git stash apply 用来过来以来三遍的改动。

git stash apply stash@{1}来回复指定的改动。

 

git stash pop stash@{1} 的效率和git stash apply类似。 

git stash pop 会从stash栈中移除某个记录,而git stash apply不会。

 

git stash clear 清空栈。

 

6. Tag

  1. 显示tag

git tag    展现所有的tag

 

异常展现

$ git tag -l v3.0*
v3.0
v3.0-rc1
v3.0-rc2
v3.0-rc3
v3.0-rc4
v3.0-rc5
v3.0-rc6
v3.0-rc7

  1. 来得某个tag的详细新闻

git show v3.0

 

  1. 创建tag 

git tag -a v1.4 -m “my version 1.4”

 

git tag -s v1.5 -m “my version 1.5”

本条将会添加pgp的签署

 

对此一个-s的tag, 你可以

git tag -v v1.5

来表达这多少个tag, 当然你需要有对方的PGP公钥。

 

git tag v1.4-lw

以此是轻量级的tag。

 

git tag -a v1.2 SHA

对某个指定的SHA打tag,默认是HEAD

 

git push origin v1.2

git push origin –tags

默认情形下是不会将tag的消息送到远端的。 

首先的一声令下将某个指定的tag送到远端。

第二个指令将富有的tag送到远端。

 

7. Remote Repository

https://github.com/ 这一个网上可以提供建立一个免费的git的repo

remote repo是用来三个人合作的。恩。。。,比较高级。

 

显示remote repo的信息

git remote

git remote -v

git remote show origin 

 

添加另外remote 库

git remote add localname URL

也就是用这一个localname 来代表URL

 

下一场就足以从remote中下载代码

git fetch localname

 

默认glone后local的HEAD是track在origin/master上的,

故而一旦您想要work on另外branch,需要先在本土建立一个branch

git branch –track feature origin/feature

其一意思是地点有个叫feature的branch,这一个是track origin/feature的。

 

查看remote的情况

git remote show origin

 

上传changes,假若您有权力,你能够上传自己的改进到remote

git push origin master

意思是push到 origin这么些远端树的master 分支上

git push origin :master

是删除remote的分支

 

下载另外更新?

git pull

下载了履新就直接merge了

 

当本地的git仓库更新后,大家需要与远端server上的仓库同步。

诚如这么做

git fetch   将联名一下状态

git fetch -p 可以清空远端已经不用的分支

git branch -v 可以观望当地仓库中拨出的情况。

git branch -av 可以看到远端和地面分支的情事

git checkout branchname 换来您想要更新的local branch上

git rebase origin/branchname 这样可以将地面做的commit
取下,并再次apply到新型的地点。

 

8. Some Tips

1.
只要编辑到了某个版本,发现某个效率不起功效了,或者有bug了。不过自己领悟前边的某个版本是好的。

git bisect start

git bisect bad      现在那多少个版本是坏的

git bisect good good_commit   good_commit这个版本是好的

 

接下去编译,测试。 假使是好的

git bisect good

假设仍旧不好

git bisect bad

这般git都会给您输出某个中间的版本让你继承测试。

 

找到了错误,用

git bisect reset 恢复生机到原来的版本。

 

  1. git 命令在bash中活动补全

 http://progit.org/book/ch2-7.html

将git-completion.bash 拷贝到 /etc/bash_completion.d/git

 

  1. gitalias

git config –global alias.co checkout

 

  1. 用git 打包

git archive master | gzip  > master.tar.gz

把master这个branch打包了。 

 

  1. cleanup

git用得时间多了,会变慢。 那么可以用下边的吩咐优化一下。

git gc   – Cleanup unnecessary files and optimize the local repository

git-repack – Pack unpacked objects in a repository

http://roucheng.cnblogs.com/

http://www.cnblogs.com/roucheng/p/texiao.html

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website