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