Git 学习

1.1 分布式版本控制系统( Distributed Version Control System,简称 DVCS )
1.2 对于任何一个文件,在Git内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
1.3 安装git,略。各个平台版本都有的
1.4 git初始配置。默认也行
2.1 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行
    $ git init  //在工作目录中初始化新仓库
现在,你已经得到了一个实际维护着若干文件的 Git 仓库。
2.2 克隆仓库到当前目录的命令格式为 git clone [url]
    $ git clone git://github.com/schacon/grit.git
    $ git clone git://github.com/schacon/grit.git mygrit    //这样可以重定义了项目目录名称
2.3 $ git status     // 检查文件状态    
2.4 纳入版本控制,跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等
    $ git add  <filenameopath>    //加跟踪的文件或目录路径,把其放入暂存区域
    $ git add  *.c 
    $ git add  .              //加入所有
2.5 忽略某些文件,创建一个名为 .gitignore 的文件,列出要忽略的文件模式,格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。可以使用标准的 glob 模式匹配。 

*匹配模式最后跟反斜杠(/)说明要忽略的是目录。 *要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配所有 0 到 9 的数字)。
2.6 查看已暂存和未暂存的更新
    $ git diff   //此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
    $ git diff --cached    //看已经暂存起来的文件和上次提交时的快照之间的差异
    $ git diff --staged    //同上命令
2.7 提交更新
好习惯:每次准备提交前,先用git status,是不是都已暂存起来了,然后再运行提交
    $ git commit   //启动文本编辑器以便输入本次提交的说明。
    $ git commit -m "。。。。"   //直接加入记录的文本
2.8 跳过使用暂存区域,自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
    $ git commit -a

2.9 移除文件.

   $git rm   //连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中仅是从跟踪清单中删除               $ git rm --cached <filenameopath>

后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
    $ git rm log/\*.log              //此命令删除所有log/ 目录下扩展名为 .log 的文件。
2.10 移动和重命名文件
    $ git mv file_from  <filenameopath>
2.11 查看提交历史
    $ git log    //会按提交时间列出所有的更新,最近的更新排在最上面
    $ git log --since=2.weeks
    -p 选项展开显示每次提交的内容差异
    -(n) 仅显示最近的 n 条提交
    --stat 仅显示简要的增改行数统计
    --since, --after 仅显示指定时间之后的提交
    --until, --before 仅显示指定时间之前的提交
    --author 选项显示指定作者的提交
    --grep 选项搜索提交说明中的关键字
    --pretty  可以指定使用完全不同于默认格式的方式展示提交历史比如用oneline 将每个提交放在一行显示。format,可以定制要显示的记录格式;另外还有 short,full 和fuller
    $ git log --pretty=oneline
    $ git log --pretty=format:"%h - %an, %ar : %s"
2.12
    $ git commit --amend   //修改最后一次提交,重新编辑提交记录
    $ git reset HEAD  <filenameopath>  //取消已经暂存的文件
    $ git checkout -- <filenameopath> //取消对文件的修改
2.13
    $ git remote    //查看当前的远程库
origin----默认使用这个名字来标识你所克隆的原始仓库。-v 选项(--verbose)显示对应的克隆地址
2.14 添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用:
    $ git remote add [shortname] [url]
    $ git remote add pb git://github.com/paulboone/ticgit.git                   //现在可以用字串 pb 指代对应的仓库地址了
    $ git fetch [remote-name]   //从远程仓库抓取数据
有一点很重要,需要记住,fetch命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
2.15 推送数据到远程仓库,要把本地的 master 分支推送到origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:
    $ git push origin master
2.15 查看远程仓库信息
    $ git remote show [remote-name] 查看某个远程仓库的详细信息
    $ git remote rename pb paul           //远程仓库的重命名
    $ git remote rm paul   //移除对应的远端仓库
2.16 创建一个含附注类型的标签非常简单,用 -a (annotated有注释的)指定标签名字,-m
    $ git tag -a v1.4 -m 'my version 1.4' 
    $ git tag   //列显已有的标签

    $ git tag v0.1  //新建标签

(来源于http://git-scm.com/book/zh,很不错的)

posted @ 2014-06-19 15:16  Kiveen  阅读(266)  评论(0编辑  收藏  举报