Git基础
今天开始学习git,先看三章
并做一些摘录。
0.直接记录快照,而非差异比较CVS、Subversion、Perforce、Bazaar ,将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
而Git则是对于文件进行快照,而非差异比较,如下
1.git就是一个版本管理工具,近乎所有操作都是本地执行。举个例子,要浏览项目的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中读取。 你能立即看到项目历史。 如果你想查看当前版本与一个月前的版本之间引入的修改,Git 会查找到一个月前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理。这也意味着你离线或者没有 VPN 时,几乎可以进行任何操作。 如你在飞机或火车上想做些工作,你能愉快地交,直到有网络连接时再上传。 如你回家后 VPN 客户端不正常,你仍能工作。 使用其它系统,做到如此是不可能或很费力的。 比如,用 Perforce,你没有连接服务器时几乎不能做什么事;用 Subversion 和 CVS,你能修改文件,但不能向数据库提交修改(因为你的本地数据库离线了)。 这看起来不是大问题,但是你可能会惊喜地发现它带来的巨大的不同。
这段看不懂
2.Git 保证完整性
Git 中所有数据在存储前都计算校验和,然后以校验和来引用。Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。
实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
3.Git的三种状态
已提交(committed):数据已安全的保存到本地数据库中
已修改(modified):已修改文件吗,但还未保存到数据库中
已暂存(staged):表示已对一个已经修改过的文件进行了标记,是指包含在下次提交的快照当中
Git项目的三个工作区域,对应三种不同的工作状态:工作目录(本地修改),暂存区域(暂存,stage,为下次上传快照做准备),Git仓库(commit的区域,存放着特定版本的文件,提交到这里)
4.具体的一些命令行操作(命令行模式和Linux很相似)
检查当前文件状态 git status 跟踪新文件查看已暂存和未暂存的修改:git diff此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。
git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
命令行的git diff看不懂
清屏:1.clear 2.ctrl+l 3.reset
添加echo 追加,修改??
commit将本地的文件存到本地库中
git rm 删除文件可以带尾缀之类的
git log 命令行系列,查看提交历史
撤消操作:
git commit --amend
远程仓库:远程仓库是指托管在因特网或其他网络中的你的项目的版本库。
添加远程仓库 git remote add pb https://github.com/paulboone/ticgit 其中,pb是后面的URL的代替名,之后可以用pb来代替此URL
打标签 git tag,是给某一次提交打标签
后期打标签 git log --pretty=oneline查看提交历史
eg: git tag -a v1.2 9fceb02 需要在命令的末尾指定提交的校验和(或部分校验和)
共享标签:默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样 - 你可以运行 git push origin [tagname]
删除标签,检出标签看不懂
别名。 我们不会
在之后的章节中引用到或假定你使用过它们,但是你大概应该知道如何使用它们。
Git 并不会在你输入部分命令时自动推断出你想要的命令。 如果不想每次都输入完整的 Git 命令,可以通过 git
config 文件来轻松地为每一个命令设置一个别名。 这里有一些例子你可以试试:
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
这意味着,当要输入 git commit 时,只需要输入 git ci
应该是--global alias .aaa bbb 其中aaa是希望替代的命令,bbb是原命令,对应到上面的例子就是:用st代替status
git config --global alias.last 'log -1 HEAD'这样,可以轻松地看到最后一次提交