分布式版本控制系统Git-基础

Git特性

  • 直接记录快照,而非差异比较:Git 把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个快照流。
  • 近乎所有操作都是本地执行:本地磁盘上就有项目的完整历史。
  • 完整性:所有数据在存储前都计算校验和,然后以检验和来引用。

Git工作流程

  • 在工作目录中修改文件。
  • 暂存文件,将文件的快照放入暂存区域。
  • 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

获取 Git 仓库

  • 在现有目录中初始化仓库

$ git init
$ git add *.c        //指定文件跟踪
$ git add LICENSE
$ git commit -m 'initial project version'
  • 克隆现有的仓库

$ git clone [url] <本地仓库名>

记录每次更新到仓库

检查当前文件状态

$ git status

跟踪新文件|暂存已修改文件

$ git add <file>

忽略文件

Tip:GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore 找到它.
$ cat .gitignore

查看已暂存和未暂存的修改

查看尚未暂存的文件更新了哪些部分

$ git diff

查看已暂存的将要添加到下次提交里的内容

$ git diff --cached
$ git diff --staged

提交更新

$ git commit -m "提交信息"

移除文件

在工作目录中删除文件并不跟踪文件

$ rm <file>
$ git rm <file>

在工作目录中保留但不跟踪文件

$ git rm --cached README

移动文件

$ git mv file_from file_to

 查看提交历史

$ git log

-p:显示每次提交的内容差异。

-2:显示最近两次提交。

--stat:显示每次提交的简略的统计信息。

--pretty=oneline

--pretty=format:"%h %s" --graph:添加了一些ASCII字符串来形象地展示你的分支、合并历史。

撤销操作

提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了,可以运行带有 --amend 选项的提交命令尝试重新提交

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

取消暂存的文件

$ git reset HEAD <file>

撤销对文件的修改

$ git checkout -- <file>            //危险命令

Important:在 Git 中任何 已提交的 东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复。 然而,任何你未提交的东西丢失后很可能再也找不到了。

远程仓库的使用

查看所有已经配置的远程仓库

$ git remote -v
origin    https://github.com/schacon/ticgit (fetch)
origin    https://github.com/schacon/ticgit (push)

添加远程仓库

$ git remote add <shortname> <url>

从远程仓库中抓取与拉取

$ git fetch [remote-name]

推送到远程仓库

$ git push origin master

查看某个远程仓库的信息

$ git remote show [remote-name]

远程仓库的移除与重命名

$ git remote rename <old-remote-name> <new-remote-name>
$ git remote rm <remote-name>

打标签 

列出标签

$ git tag -l 'v1.8.5*'

附注标签

$ git tag -a v1.4 -m 'my version 1.4'
$ git show v1.4

轻量标签

$ git tag v1.4-lw

后期打标签

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

$ git tag -a v1.2 9fceb02

共享标签

默认情况下,git push 命令并不会传送标签到远程仓库服务器上。在创建完标签后你必须显式地推送标签到共享服务器上。

$ git push origin [tagname]

想要一次性推送很多标签。

$ git push origin --tags

 

posted @ 2016-11-15 14:46  心有猛虎~细嗅蔷薇  阅读(130)  评论(0编辑  收藏  举报