获得Git仓库

 

从当前目录初始化:

git init

初始化后自动建立.git目录

 

从现有仓库克隆:

git clone git@github.com:progit/progit.git

克隆后可获得项目历史所有数据(,每一个文件的每一个版本)

如果需要定义新建的项目目录名称可在后面指定

git clone git@github.com:progit/progit.git myprogit

 

检查文件当前状态:

git status

File.Status.Lifecycle

 

将显示:

  • 当前所在分支(On branch **)
  • 已修改但尚未跟踪的文件(Untracked files)
  • 已跟踪但内容自上次跟踪发生过变化的文件(Changed but not updated)
  • 已暂存但尚未提交的文件(Changes to be committed)

 

git add 既可跟踪未跟踪的文件,亦可更新自上次跟踪后发生过变化的文件

 

 

忽略某些文件:

 

.gitignore 格式规范:

  • 所以空行和#开头的行将被忽略
  • 可使用标准glob模式匹配
  • 最后跟/表示忽略目录
  • 要忽略指定模式以外的文件或目录可在模式前加上!取反

 

glob模式语法:

  • 简化了的正则表达式
  • *匹配零个或任意多个字符
  • []匹配任何一个列在方括号内的字符

如[abc]要么匹配一个a,要么匹配一个b,要么匹配一个c

  • ?只匹配一个任意字符
  • [-]在-两边的字符的范围内均可匹配

如[0-9]表示匹配0到9的数字

例:

# 此为注释– 将被Git 忽略

*.a # 忽略所有.a 结尾的文件

!lib.a # 但lib.a 除外

/TODO # 仅仅忽略项目根目录下的TODO 文件,不包括subdir/TODO

build/ # 忽略build/ 目录下的所有文件

doc/*.txt # 会忽略doc/notes.txt 但不包括doc/server/arch.txt

 

查看当前文件与暂存区域快照差异:

git diff

查看以暂存的文件和上次提交的快照差异:

git diff –cached 或 git diff –staged (效果相同)

 

提交时的几个参数:

-v: 将修改差异的每一行都包含到注释中

-m: 直接在后面提交说明

注:提交时记录的是放在暂存区域的快照,任何为暂存的仍然保持已修改状态

-a: 跳过暂存区域,直接将所有已跟踪的文件暂存并提交

 

移除文件:

git rm

若删除之前修改过且已放到暂存区域需加入-f 选项强制删除

 

重命名文件:

git mv file_from file_to

 

查看提交历史:

git log

-p: 展开每次提交的内容差异

-2: 仅显示最近两次

–stat: 经显示简要的增改行数统计

–pretty: 指定使用不用于默认格式的方法展示提交历史

=online: 每个提交放在一行显示

=short, full, fuller …

=format:””: 定制显示的记录格式:

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

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

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

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

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

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

%an 作者(author)的名字

%ae 作者的电子邮件地址

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

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

%cn 提交者(committer)的名字

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

%cd 提交日期

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

%s 提交说明

用online或format时结合–graph可看到简单图形展示分支及其分化衍合情况。

 

其他常用选项:

–shortstat 只显示–stat 中最后的行数修改添加移除统计

–name-only 仅在提交信息后显示已修改的文件清单

–name-status 显示新增、修改、删除的文件清单

–abbrev-commit 仅显示SHA-1 的前几个字符,而非所有的40 个字符

–relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)

 

限制输出长度:

–since

-(n) 仅显示最近的n 条提交

–since, –after 仅显示指定时间之后的提交

–until, –before 仅显示指定时间之前的提交

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

–committer 仅显示指定提交者相关的提交

注:

如果要得到同时满足这两个选项搜索条件的提交,就必须用–all-match 选项

 

 

撤消操作

 

修改最后一次提交:

git commit –amend

此命令将使用当前的暂存区域快照提交,如果刚才提交完没有作任何改动,直接运行此命

令的话,相当于有机会重新编辑提交说明,而所提交的文件快照和之前的一样

 

取消暂存:

git reset HEAD <file>

 

取消对文件的修改:

git checkout — <file>

如果只是想回退版本不建议用此命令

 

远程仓库使用

 

抓去远程仓库中有的,本地仓库没有的信息:

git fetch [remote-name]

智将数据拉到本地仓库,不会自动合并分支

如果需要自动抓取并合并使用git pull

 

查看远程仓库详细信息:

git remote show [remote-name]

 

打标签

 

列显已有的标签

git tag

可使用特定的搜索模式 如 git tag -l ‘v1.4.2.*’

 

Git使用的标签分两种:

  • 轻量级的(lightweight)

就像不会变化的分支,实际为一个指向特定对象的引用

  • 含附注的(annotated)

存储在仓库的独立对象,有本身的校验和信息

 

建立一个含附注的标签:

如:git tag -a v1.4 -m ‘my version 1.4′

若在-m后无内容将会启动文本编辑器

 

查看相应标签的版本信息:

如:git show v1.4

 

签署标签:

如:git tag -s v1.5 -m ‘my signed 1.5 tag’

 

建立轻量级标签:

如:git tag v1.4-lw

 

验证标签:

如:git tag -v v1.4.2.1

 

后期加注标签:

在打标签时加入校验和(或前几位)即可

如:git tag -a v1.2 9fceb02

 

分享标签:

git push origin [tagname]

推送所有:

git push origin –tags

 

自动完成

 

如果你用的是Bash shell,可以试试看Git 提供的自动完成脚本。下载Git 的源代码,进入contrib/completion 目录,会看到一个git-completion.bash 文件。将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点:cp gitcompletion.bash ~/.git-completion.bash),并把下面一行内容添加到的.bashrc文件中:

source ~/.git-completion.bash

Comments are closed.

Post Navigation