码迷,mamicode.com
首页 > 其他好文 > 详细

[git学习:Pro git(2)]Git基础

时间:2015-03-08 17:27:20      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

Getting a Git Repository(取得项目的Git仓库)

一在工作目录中初始化新仓库:

git init

初始化后,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录下不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中任何一个文件。

$git add *.c #git add 开始跟踪文件,begin to tracking a new file
$git add README
$git commit -m ‘initial project version‘
二从现有仓库克隆

Git clone收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。克隆仓库的命令格式:git clone [url]

$git clone git://github.com/schacon/grit.git
当前目录下创建一个名为grit的目录,其中包含一个.git的目录, 用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝

如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit
Git 支持许多数据传输协议。之前的例子使用的是 git://  协议,不过你也可以用 http(s)://  或者user @server :/path.git  表示的 SSH 传输协议。

Recording changes to the Repository(记录每次更新到仓库)

检查当前文件状态(Checking the Status of Your Files)

$git status
On branch master
nothing to commit,working directory clean#master branch所有文件上次提交后未更改
跟踪新文件(Tracking new files)
$ vim README
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        README

nothing added to commit but untracked files present (use "git add" to track)
$git add README  #开始跟踪文件
$$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   README  #README已暂存,如果提交后,将会记录在版本历史
暂存已修改文件

修改之前已跟踪过的文件benchmarks.rb,然后再次运行status

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   README

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb
$ git add benchmarks.rb #git add 把已跟踪的文件放到暂存区
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   README
        modified:   benchmarks.rb
git add还可以用于合并时把有冲突的文件标记为已解决状态

忽略某些文件(Ignoring Files)

有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。通常一些自动生成的文件,比如日志文件或者编译过程中创建的临时文件等。我们可以创建名为.gitignorede的文件,列出要忽略的文件模式,文件格式规范如下:

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
查看已暂存和未暂存的跟新(Viewing your Staged and Unstaged Changes)

要查看尚未暂存的文件更新了哪些部分,不加入参数直接输入git diff,此命令比较是工作目录中当前文件和暂存区域快照之间的差异,也就是修改后还没暂存起来的内容。

$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
           @commit.parents[0].parents[0].parents[0]
         end

+        run_code(x, ‘commits 1‘) do
+          git.commits.size
+        end
+
         run_code(x, ‘commits 2‘) do
           log = git.commits(‘master‘, 15)
           log.size



[git学习:Pro git(2)]Git基础

标签:

原文地址:http://my.oschina.net/u/347414/blog/384001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!