Git使用心得

Git权威指南中文PDF文档下载:

http://pan.baidu.com/s/1mgyTmhM

----------------------------------------快捷方式----------------------------------------------------------------

下面的命令会修改.git/config文件

1、gitst代表gitstatus

设置命令:gitconfig--systemalias.ststatus

2、gitci代表gitcommit

设置命令:gitconfig--systemalias.cicommit

3、gitco代表gitcheckout

设置命令:gitconfig--systemalias.cocheckout

4、gitbr代表gitbranch

设置命令:gitconfig--systemalias.brbranch

----------------------------------------Linux常识----------------------------------------------------------------

1、echo"test">>test.txt//追加test字符串到test.txt文件中

2、touch命令//修改时间戳

3、cat//查看文件内容

4、netstat-tunpl

----------------------------------------查看git配置文件-----------------------------------------------------------

1、gitshow--help//git查看帮助文档

----------------------------------------查看git配置文件-----------------------------------------------------------

1、查看git配置文件

cat.git/config

结果如下:

[core]

repositoryformatversion=0

filemode=false

logallrefupdates=true

autocrlf=false

bare=false

hideDotFiles=dotGitOnly

[remote"origin"]

[email protected]:/niux_crmv3_web

fetch=+refs/heads/*:refs/remotes/origin/*

[branch"master"]

remote=origin

merge=refs/heads/master

[branch"test"]

remote=origin

merge=refs/heads/test

[branch"dev"]

remote=origin

merge=refs/heads/master

Administrator@0251-00222/e/workspace_eclipse_git/niux_crmv3_web(test)

2、查看配置文件中某参数的值

gitconfigbranch.test.remote

结果如下:origin

----------------------------------------远端仓库----------------------------------------------------------------

1、修改远程仓库URL

[email protected]:/niux_crmv3_web

2、查看远程连接的是哪个仓库

gitremove-v

3、修改远端分支名称

在使用gitbranch-r时,会显示远端所有的分支,如下所示:

$gitbranch-r

origin/master

origin/release

这个origin的名字就代表了远端,而/后面的master和release则代表的远端分支的真正名称,如果看着origin不爽,可以将origin修改为server:

gitremoterenameoriginserver

$gitbranch-mbug-2.1.0f-1.1.9//修改本地分支名称

4、同步服务器上的远端分支修改,当远端分支、tag发生变动后,使用此命令会将变动同步到本地

gitremotepruneorigin

----------------------------------------本地仓库-----------------------------------------------------------------

1、导出工程

[email protected]/gitserver/niux_crm_server

gitremoteset-urloriginhttp://10.208.146.21/gitserver/niux_crmv3_web//修改git库远程地址

2、gitadd-i//进入交互式界面(感觉这个比较爽)

3、gitadd-A//将本地改动全部记录到暂存区(这个很有用)

4、gitadd-u//将被版本库跟踪的本地文件变更(修改、删除)全部记录到暂存区

5、gitadd-f//将强制添加的版本控制中,防止错误的ignore

6、gitrm-f文件//强制删除文件,会清空暂存区和本地工作空间

gitrm--cached文件//只会清空暂存区文件

7、gitmvold文件名new文件名//修改文件名称

8、远程创建了一个新仓库,本地创建了一个新项目,如何使新的项目与仓库对应起来?

1)切换到本地新项目中

2)将本地项目与远端新仓库([email protected]:/niux_crmv3_web)关联

[email protected]:/niux_crmv3_web

----------------------------------------分支的查看-----------------------------------------------------------------

1、查看本地、远端所有分支

gitbranch-a

2、查看本地所有分支

gitbranch

3、查看远端所有分支

gitbranch-r

4、查看分支详细信息

gitbranch-v

5、查看所有分支详细信息

gitbranch-av

----------------------------------------分支的切换-----------------------------------------------------------------

1、切换本地分支

gitcheckouttest//切换到本地的test分支

----------------------------------------分支的创建-----------------------------------------------------------------

1、创建本地分支,将远端test分支拉到本地,然后创建本地分支test(注:前提是本地不存在test分支)

gitcheckout-btestorigin/test

2、创建本地分支,根据本地的master分支,重新创建一个本地分支local_test

gitcheckout-blocal_testmaster

----------------------------------------删除分支-------------------------------------------------------------------

1、删除本地分支

gitbranch-dtest

2、删除本地分支,强制删除

gitbranch-Dtest

3、删除远端分支

gitremotermbranch

4、删除远端分支test

gitpushorigin:test

----------------------------------------分支的更新--------------------------------------------------------------------

1、gitpull远端项目路径远端分支名:本地分支名

示例:gitpulloriginremotebranch1//将远端分支remotebranch1更新到本地分支

2、gitfetchoriginmaster//相当于是从远程获取最新版本到本地,不会自动merge

----------------------------------------提交-----------------------------------------------------------------

1、gitpushorigintest:master//提交本地test分支作为远程的master分支

2、gitpushorigintest:test//提交本地test分支作为远程的test分支

----------------------------------------分支的提交--------------------------------------------------------------------

1、提交本地的分支到远端分支(远端分支若不存在,则创建)

gitpushorigin本地分支:服务器分支//提交本地分支到服务器分支

2、如果本地分支与服务器分支名称相同,则可以写为

gitpushorigin"branch_name"

----------------------------------------分支合并----------------------------------------------------------------------

1、用法:gitpull合并的目标分支合并的来源分支

示例:gitpull.dev~2(合并当前分支和dev~2分支)

2、gitrebase

示例:

gitrebasetest1

gitadd.

gitrebase--continue

gitpushorigintest:test1

----------------------------------------checkout回退工作空间-----------------------------------------------------------

说明:checkout命令用于回退文件时,主要用于将工作空间回退到暂存区的某个版本

1、将工作空间的test1.txt文件回退到暂存区版本

gitcheckouttest1.txt

2、将工作空间的test1.txt文件回退到版本库当前版本,也同时回退暂存区

gitcheckoutHEADtest1.txt

3、将工作空间的test1.txt文件回退到版本库当前版本前2个版本,也同时回退暂存区

gitcheckoutHEAD~2test1.txt

4、将工作空间的test1.txt文件回退到branch1分支当前版本,也同时回退暂存区

gitcheckoutbranch1test1.txt

5、用暂存区的所有文件替换工作空间所有文件(非常危险)

gitcheckout.

6、查看服务器分支的提交日志(进入到detached状态)

gitchockoutorigin/master

gitlog--graph--online

----------------------------------------reset回退暂存区-----------------------------------------------------------------

1、gitresetHEAD[文件]<==>gitreset[文件]//用HEAD替换暂存区中的内容(不重置index,也不改变工作区,只是将暂存区的文件从当前版本改变为HEAD指向的版本)

其他形式如同:gitreset955ad1f[文件]

2、gitreset--hard955ad1f//先查看历史提交记录,然后将工作空间回退到HEAD对应的特定版本

上述命令执行以下三个步骤:

1)现将暂存区的index指向955ad1f

2)然后将955ad1f指向的内容放入暂存区

3)最后修改工作空间的内容与暂存区一致

结果显示如下:

$gitlog--graph--oneline

*7883905tijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotijiaotij

*8ec3732test1.txt

*ea22921addline3

*b7d4e9eaddline2

*edef0d0删除文件

*b127aeca.txt增加1

*6a85c78提交a.txt

*78d83baMergebranch'niux_crmv3_web_bizarea'

|\

|*305c9b3Mergebranch'niux_crmv3_web_bizarea'

||\

||/

|*d48399f提交bizarea分支修改1

*|d1937cc提交主分支修改1

|/

*deaa7e9提交3

*cbe3500提交2

*955ad1finit

Administrator@0251-00222/e/workspace_eclipse_git/niux_crmv3_web(local_test)

$gitreset--hard955ad1f

HEADisnowat955ad1finit

3、gitreset--soft955ad1f//只更改index的指向,不改变暂存区和工作空间的内容

gitreset--softHEAD//引用退回到最新提交

gitreset--softHEAD^//引用退回到最新提交的上一次提交,即删除最新提交

4、gitreset--mixed955ad1f(该参数为默认参数)//修改index的指向,然后修改暂存区的内容

----------------------------------------gitdiff比较--------------------------------------------------------------------

工作空间就是workspace,暂存区就是.git/index,而HEAD指的是本地的Master或者分支

1、工作空间与暂存区进行比较

gitdiff

2、工作空间与HEAD进行比较

gitdiffHEAD

3、暂存区与HEAD进行比较

gitdiff--cached

4、比较两个版本的变化,只显示文件名

gitdiff--name-only[HEAD|--cached]//中括号中的参数同1、2、3点中所述

5、文件不同版本间的比较

gitdiff<commit1><commit2>--<paths>

6、比较一个文件在两个tag之间的不同

gitdifftag1:filetag2:file

----------------------------------------gittag--------------------------------------------------------------------

1、gittag-av1.5-m'注释'//-a参数用来指定tag的名称

2、gittag//查看本地tag

3、gitpushoriginv1.5//提交tag到远端服务器

4、gittag-dtag名称//删除本地tag

5、pushorigin:服务器tag名称//删除服务器上的tag

----------------------------------------git日志查看--------------------------------------------------------------------

说明:日志查看,是查看HEAD对应的分支的提交记录

1、精简日志查看

gitlog--pretty=oneline

2、日志查看

gitlog-3--graph--oneline[文件名]//若后面带文件参数,则显示该文件的提交历史记录;若没有文件参数,则显示全部的提交记录;3表示最近的3条提交记录

3、gitlog--stat

stat仅简要的显示文件增改行数统计,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。

4、gitlogpretty选项,可以指定使用完全不同于默认格式的方式展示提交历史

选项说明

%H提交对象(commit)的完整哈希字串

%h提交对象的简短哈希字串

%T树对象(tree)的完整哈希字串

%t树对象的简短哈希字串

%P父对象(parent)的完整哈希字串

%p父对象的简短哈希字串

%an作者(author)的名字

%ae作者的电子邮件地址

%ad作者修订日期(可以用-date=选项定制格式)

%ar作者修订日期,按多久以前的方式显示

%cn提交者(committer)的名字

%ce提交者的电子邮件地址

%cd提交日期

%cr提交日期,按多久以前的方式显示

%s提交说明

gitlog--pretty=format:"%h-%an,%ar:%s"//查看日志,显示简短hash、提交人、时间(以"几周以前"方式显示)、注释

gitlog--pretty=format:"%h-%an,%ad:%s"//查看日志,显示简短hash、提交人、时间、注释

5、查看某个人的所有提交记录

gitlog--committer=tian.zheng--pretty=format:"%h-%an,%ar:%s"

6、gitshow查看某次提交的修改记录

gitshowhash码--stat

7、显示本地文件状态

gitstatus-s//显示精简格式的输出状态

----------------------------------------git辅助工具--------------------------------------------------------------------

1、保存git工作进度

gitstash

2、查看当前HEAD指向哪个分支

cat.git/HEAD

结果如下:

ref:refs/heads/local_test

3、查看refs/heads/local_test中的内容

$cat.git/refs/heads/local_test

结果如下:

7883905d38d1374012dde5bb0613bdc54a38d023

4、显示githash值代表的类型

gitcat-file-t7883905d38d1374012dde5bb0613bdc54a38d023

结果如下:

commit

5、显示githash值代表的内容

gitcat-file-p7883905d38d1374012dde5bb0613bdc54a38d023

结果如下:

tree502303fcbcb586811647ddc4a630cdd8ac16eda9

parent8ec373288dfb7f35d166f2b7069dbf53ed9793d7

authortian.zheng<[email protected]>1381829379+0800

committertian.zheng<[email protected]>1381829379+0800

测试提交1

6、将引用显示为对应的提交ID

gitrev-parseHEADlocal_test

显示结果

429fb519cb9e97ffa65e90b00985bd49154b6f03

6b1120c4569ac7f132da78c6c63093fdb236fa35

7、gitshowHEAD~1:test1.txt//显示版本库HEAD前1个版本的test1.txt内容

gitshowHEAD~4:test1.txt//显示版本库HEAD前4个版本的test1.txt内容

gitshowHEAD~4:test1.txtnewtest1.txt//将版本库HEAD前4个版本的test1.txt内容导出到新文件

8、gitblametest1.txt//显示文件在什么时候,谁修改了什么东西

429fb519(tian.zheng2013-10-1612:30:36+08001)line1

6b1120c4(tian.zheng2013-10-1612:31:15+08002)line2

相关推荐