git常用、实用操作:

http://iissnan.com/progit/

git常用、实用操作:

(1)对比两次修改改了哪些文件。

$ git diff --stat aa30fba0676f5e5f7bc254240b28887916596eb3 7e68d94b28a15e7b4ccce6a63ac256105e36c495 

vendor/rockchip/chinaone/AndroidBoard.mk          |  21 ++++++++----------- vendor/rockchip/chinaone/apk/Explorer_v2.2.apk    |  Bin 0 -> 375562 bytes vendor/rockchip/chinaone/apk/Welcome.apk          |  Bin 1144642 -> 0 bytes vendor/rockchip/chinaone/apk/astro.2.5.2_minde.apk |  Bin 2055219 -> 0 bytes vendor/rockchip/chinaone/apk/com.qo.android.am.apk |  Bin 427623 -> 0 bytes vendor/rockchip/chinaone/products/chinaone.mk      |    2 + 

6 files changed, 11 insertions(+), 12 deletions(-)root@luoqi-desktop:~/work/luoqi/yourAndroid/android#

(2)恢复某个文件夹或者文件

$ git checkout 文件夹 文件

(3)取消git add的文件或者文件夹 

$ git reset HEAD 文件名1 文件名2 。。。

(4)恢復 Commit,重新提交 Commit,修改数据并不会丢失。

$ git reset --soft HEAD^

(5)可以git log --stat能够方便的查看提交日记。

(6)查看没有提交的某个文件修改了什么

$ git diff 文件名1 文件名2 。。。

(7)恢复所有文件到初始状态 

$git checkout -f

(8)显示最后一次 commit 修改的内容:

 $ git show

(9)销毁所有stash了的未提交改动

$ git stash clear

(10)如果某次git push出现了错误。可以取消服务器上的该提交点,但是如果出现冲突,需要手动解决。

git revert bfd142f5cc9bd3211e22e8d5b7ceebc68374a4a5 

git push 

(11)git reset --hard eb22ee48249670dd1b2fbb7159ce95c4e9c78da4彻底回退到某个版本,本地的源码也会变为上一个版本的内容。

(12)一些简单的配置:          

$ git-config user.name "Jike Song"         

 $ git-config user.email albcamus@gmail.com         

(13)gitk图形界面先apt-get install gitk,然后到根目录下面输入gitk如果输入gitk origin/develop可以看远端分支

(14)删除远端分支(提交一个空分支上去)

$: git push origin :p4popt

To git@search.ued.taobao.net:projects/search.git 

- [deleted]        p4popt

比如删除origin/new分支:

git push luoqi@10.10.10.201:/home/rockchip/china_one/cj_5_kernel.git :new

(15)撤销最近一次修改:

$ git reset --soft HEAD~1

执行前:

commit f02aafef0ff9e69d503be84835aa86714e725b44

Author: luoqiDate:  Wed Apr 16 15:41:13 2014 +0800    

test2

commit c28ad6a7a37ad224b0fbcaa341392d6b0b109d66

Author: luoqi

Date:  Wed Apr 16 15:40:43 2014 +0800    test1

执行后:

commit c28ad6a7a37ad224b0fbcaa341392d6b0b109d66

Author: luoqi

Date:  Wed Apr 16 15:40:43 2014 +0800    test1

(16)只删除中间的一个commit对应的修改,其他不变 git revert <对应的哈希值>

创建本地tag:

git tag

或者

git tag -a-m “0.1.2版本”

删除本地tag:

git tag -d

推送tag到远程服务器:

git push origin

删除远程tag:

git push origin --delete tag

我们常用 -p 选项 展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

$ git log -p -2

此外,还许多摘要项可以用,比如 --stat,仅简要的显示 文件 增改行数统计,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。

$ git log --stat

--author 仅显示指定作者相关的提交。

##########

tg summary --graphviz | dot -T png -o topgit.png

生成树形图片

git使用技巧:

git tag -l -n                      显示所有tag

git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

【本地代码库回滚】:

git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除

git reset --hard HEAD~3:将最近3次的提交回滚

【远程代码库回滚】:

这个是重点要说的内容,过程比本地回滚要复杂

应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布

原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

操作步骤:

1、git checkout the_branch

2、git pull

3、git branch the_branch_backup //备份一下这个分支当前的情况

4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

5、git push origin :the_branch //删除远程 the_branch

6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,并且选择了 Force Push选项(在push权限设置里有这个选项)

另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞

8、解决.gitignore无法忽略的文件以及自身被忽略的方法

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。

git update-index --assume-unchanged PATH/FILE

在PATH/FILE处输入要忽略的文件。

然后在.gitignore文件里添加要忽略的文件或文件夹就行了

需要还原回来则:

git update-index --no-assume-unchanged PATH/FILE

###################

初始化git库:

Git global setup

git config --global user.name "yourUserName"

git config --global user.email "yourEmail"

Create a new repository

git clone git@xxx.com:luoqi/sdk.git

cd {projectDir}

touch README.md

git add README.md

git commit -m "add readme"

git push -u origin master

Existing folder or Git repository

cd {projectDir}

git init

git remote add origin git@xxx.com:luoqi/sdk.git

git add .

git commit

-am "init"

git push -u origin master

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容