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