首页 > 代码库 > Git学习笔记(二)
Git学习笔记(二)
移除文件
如果需要从Git中移除某个文件,则需要从已跟踪文件清单中移除(即从暂存区域中移除),然后提交。可以使用git rm命令完成此项工作,该命令会连带从工作区域中删除指定的文件,这样以后就不会出现在未跟踪文件清单中。最后提交时,该文件不再纳入版本管理中。如果文件删除之前被修改过且已经放到了暂存区域中,则必须使用强制删除选项-f,以防误删文件后丢失修改的内容。另外,如果想把文件从Git仓库中删除(即从暂存区域中删除),但仍希望保留在工作区域中的文件,即仅从跟踪清单中删除时,使用—cached选项。
Git的文件的模式匹配方式
结合例子理解。$git rm log/\*.log,需要注意的是*前面的反斜杠\。Git拥有自己的文件模式扩展匹配方式,所以可以不使用shell帮忙展开匹配。不加这一反斜杠的模式是shell的文件匹配模式,加这一反斜杠的模式是Git自身的文件匹配模式。区别在于,使用shell的文件匹配模式,仅仅删除指定目录下的文件而不会递归匹配删除;如果使用Git的文件匹配模式,则会删除该目录及其子目录下匹配的文件。Git命令$git rm \*~删除当前目录及其子目录下所有以~结尾的文件。
命令git log –pretty=format:“”介绍
该命令用于格式化log输出的结果,这样的输出能够便于后期编程时log的提取分析。格式例子: $git log –pretty=format:“%h- %an, %ar : %s”。下面是格式占位符写法及其代表意义:
%H 提交对象(commit)的完整哈希字符串
%h 提交对象的简短哈希字符串
%T 树对象(tree)的完整哈希字符串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用—date=选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
git remote命令
git remote命令用于查看当前配置中有哪些远程仓库(注意仓库和分支的区别),在克隆完某个项目后,至少可以看到一个名为origin的远程库,Git默认使用origin来标识所克隆的原始仓库。加上参数-v或—verbose,能够显示对应的克隆地址。
Git添加新的远程仓库
使用命令git remote add [shortname] [url]。其中,shortname是远程仓库的名字,用于标识该远程仓库。例如,$git remoteadd pb git://github.com/paulboone/ticgit.git。
从远程仓库抓取数据
使用命令$git fetch [remote-name]。该命令会从远程仓库中拉取所有你本地仓库中没有的数据。需要注意的是,fetch命令仅仅只是将远程的数据拉到本地仓库,并不自动合并到当前工作分支。如果设置了某个分支用于跟踪远程库的某个分支,则可以使用$git pull命令自动抓取数据,并将远程仓库的分支合并到本地仓库中的当前分支。事实上,git clone命令本质上是自动创建了本地的master分支用于跟踪远程仓库中的master分支。
推送数据到远程仓库
命令: git push [remote-name][branch-name],将本地branch-name分支(即仓库)上的数据推送到远程remote-name仓库中。例如,$git push origin master命令将本地master分支推送到远程origin服务器上。需要注意的是,只有在所克隆的服务器上有写权限,或同一时刻没有其他人在推送数据,该命令才能执行成功。如果在推送数居前,已经有其他人推送了若干更新,则你的推送操作会被驳回。你必须把他们的更新抓取到本地,进行合并后才能再次推送。
查看远程仓库信息
使用命令: $git remote show [remote-name]。例如查看所克隆的origin仓库,$git remoteshow origin。
远程仓库的删除和重命令
命令git remote rename修改某个远程仓库在本地的简短命名。例如,$git remote rename pb paul将远程仓库在本地的简短命名pb改为paul;删除远程仓库命令git remote rm。例如,$git remote rm paul,删除远程仓库paul。
标签
Git允许对某一时间点上的版本打上标签,用以标识该时间点上的版本。人们在发布某个软件版本时,便是用打标签来进行不同软件版本的识别。
列出标签
git tag列出现有的标签;git tag –l “v1.4.2.*”用特定的搜索模式列出符合条件的标签(使用模式匹配)。
含附注的标签(annotated tag)
annotated tag是存储在仓库中的一个独立对象,有其自身的校验和信息,包含着标签的名字、电子邮件地址、日期,以及标签说明,该标签本身也允许使用GNU Privacy Guard (GPG)来签署或验证。创建annotated tag的命令: git tag –a <annotated tag name> -m <description>。显示标签的命令: git show <tagName>。如果拥有自己的私钥,则还可用GPG来签署标签,语法为: git tag –s<tagName> -m <description>。签署标签后,再运行git show便会看到对应的GPG签名的输出信息。
轻量级标签
轻量级标签是一个保存这对应提交对象的校验和信息的文件。创建lightweight标签的语法: git tag <tag name>。查看轻量标签信息的命令: git show <lightweight tag name>。
验证标签
命令语法: git tag –v <tag-name>,用该命令验证已经签署的标签,该命令会调用GPG来验证签名,所以需要有签署者的公钥存放在keystring中,才能验证。例如,$git tag –v v1.4.2.1。
后期加注标签
可以在后期对早先的某次提交加注标签,只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可,例如,$git tag –a a1.2.9 42ce46。
分享标签
默认情况下,git push并不会把标签传送到远程服务器上,只有通过显示命令才能分享标签到远程仓库。命令格式为: git push origin <tagname>。例如,$git push origin v1.5。如果需要一次把所有本地新增的标签推送到远程仓库,则使用命令$git push origin –tags。
Git命令别名
用git config命令为命令设置别名。例如:
$git config --global alias.co checkout
$git config --global alias.br branch
使用这种技术还能创造出新的命令,例如取消暂存文件输入的命令比较繁琐,则可以设置: $git config –global alias.unstage ‘reset HEAD -’。此时,$git unstage file和$git reset HEAD file等效。
Git学习笔记(二)