学习git时做的笔记。。。
初始化一个git项目
$ git init
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令,告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
克隆仓库的命令格式为 gitclone [url]。比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
$ git clonegit://github.com/schacon/grit.git
使用 Git 时的文件状态变化周期
检查当前文件状态
$ git status
只要在 “Changesto be committed” 这行下面的,就说明是已暂存状态。如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。
忽略某些文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
$ cat .gitignore
*.[oa]
*~
第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。
文件 .gitignore 的格式规范如下:
所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。 * 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 *要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff
:
若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached
命令或者git diff--staged
提交
1. $ git commit
2. $ git commit -m "Story 182: Fixbenchmarks for speed"
提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f
),以及在本次提交中,有多少文件修订过,多少行添改和删改过。
跳过使用暂存区域
Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit
加上-a
选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add
步骤:
移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用git rm
命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。
$ git rm --cached readme.txt
移动文件
$ git mv file_from file_to
查看提交历史
$ git log
git log
有许多选项可以帮助你搜寻感兴趣的提交,接下来我们介绍些最常用的。
我们常用-p
选项展开显示每次提交的内容差异,用-2
则仅显示最近的两次更新:
$ git log -p -2
比如 --stat,仅显示简要的增改行数统计:
git log –stat
可以指定使用完全不同于默认格式的方式展示提交历史。
$ git log --pretty=oneline
定制要显示的记录格式,这样的输出便于后期编程提取分析:
$ git log --pretty=format:"%h - %an,%ar : %s"
用 oneline 或 format 时结合 --graph 选项,可以看到开头多出一些 ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况。
$ git log --pretty=format:"%h %s"–graph
撤消操作
修改最后一次提交
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用--amend
选项重新提交:
$ git commit –amend
如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行--amend
提交:
上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。
取消已经暂存的文件
$ git reset HEAD benchmarks.rb
取消对文件的修改
远程仓库的使用
查看当前的远程库
要查看当前配置有哪些远程仓库,可以用git remote
命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库:
添加远程仓库
$ git remote add pbgit://github.com/paulboone/ticgit.git
$ git remote -v
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.git
从远程仓库抓取数据
此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。
推送数据到远程仓库
$ git push origin master
查看远程仓库信息
我们可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:
打标签
列显已有的标签
含附注的标签
创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:
可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。
轻量级标签
轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个 -a,-s 或 -m 选项都不用,直接给出标签名字即可:
github tips