git创建仓库
git init
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
使用方法
使用当前目录作为Git仓库,我们只需使它初始化。
git init 命令用于在目录中创建新的 Git 仓库。 在目录中执行 git init 就可以创建一个 Git 仓库了。 例如我们在当前目录下创建一个名为 runoob 的项目: 实例 $ mkdir runoob $ cd runoob/ $ git init Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/ # 初始化空 Git 仓库完毕。 现在你可以看到在你的项目中生成了 .git 这个子目录,这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。 .git 默认是隐藏的,可以用 ls -a 命令查看: ls -a . .. .git
该命令执行完后会在当前目录生成一个 .git 目录。
使用我们指定目录作为Git仓库。
git init newrepo
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'
git add 命令可将该文件添加到暂存区。 添加一个或多个文件到暂存区: git add [file1] [file2] ... 添加指定目录到暂存区,包括子目录: git add [dir] 添加当前目录下的所有文件到暂存区: git add . 以下实例我们添加两个文件: $ touch README # 创建文件 $ touch hello.php # 创建文件 $ ls README hello.php $ git status -s ?? README ?? hello.php $ git status 命令用于查看项目的当前状态。 接下来我们执行 git add 命令来添加文件: $ git add README hello.php 现在我们再执行 git status,就可以看到这两个文件已经加上去了。 $ git status -s A README A hello.php $ 新项目中,添加所有文件很普遍,我们可以使用 git add . 命令来添加当前项目的所有文件。 现在我们修改 README 文件: $ vim README 在 README 添加以下内容:# Runoob Git 测试,然后保存退出。 再执行一下 git status: $ git status -s AM README A hello.php AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。改动后我们再执行 git add . 命令将其添加到缓存中: $ git add . $ git status -s A README A hello.php 文件修改后,我们一般都需要进行 git add 操作,从而保存历史版本。
前面章节我们使用 git add 命令将内容写入暂存区。 git commit 命令将暂存区内容添加到本地仓库中。 提交暂存区到本地仓库中: git commit -m [message] [message] 可以是一些备注信息。 提交暂存区的指定文件到仓库区: $ git commit [file1] [file2] ... -m [message] -a 参数设置修改文件后不需要执行 git add 命令,直接来提交 $ git commit -a 设置提交代码时的用户信息 开始前我们需要先设置提交的用户信息,包括用户名和邮箱: $ git config --global user.name 'runoob' $ git config --global user.email test@runoob.com 如果去掉 --global 参数只对当前仓库有效。 提交修改 接下来我们就可以对 hello.php 的所有改动从暂存区内容添加到本地仓库中。 以下实例,我们使用 -m 选项以在命令行中提供提交注释。 $ git add hello.php $ git status -s A README A hello.php $ git commit -m '第一次版本提交' [master (root-commit) d32cf1f] 第一次版本提交 2 files changed, 4 insertions(+) create mode 100644 README create mode 100644 hello.php 现在我们已经记录了快照。如果我们再执行 git status: $ git status # On branch master nothing to commit (working directory clean) 以上输出说明我们在最近一次提交之后,没有做任何改动,是一个 "working directory clean",翻译过来就是干净的工作目录。 如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。屏幕会像这样: # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello.php # ~ ~ ".git/COMMIT_EDITMSG" 9L, 257C 如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下: git commit -a 我们先修改 hello.php 文件为以下内容: <?php echo '菜鸟教程:www.runoob.com'; echo '菜鸟教程:www.runoob.com'; ?> 再执行以下命令: $ git commit -am '修改 hello.php 文件' [master 71ee2cb] 修改 hello.php 文件 1 file changed, 1 insertion(+)
以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。
注: 在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。
所以在 git bash 中 git commit -m '提交说明' 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m "提交说明"。
git clone
git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。 拷贝项目命令格式如下: git clone [url] [url] 是你要拷贝的项目。 例如我们拷贝 Github 上的项目: $ git clone https://github.com/tianqixin/runoob-git-test Cloning into 'runoob-git-test'... remote: Enumerating objects: 12, done. remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 12 Unpacking objects: 100% (12/12), done. 拷贝完成后,在当前目录下会生成一个 runoob-git-test 目录: $ cd simplegit/ $ ls README.md runoob-test.txt test.txt 上述操作将复制该项目的全部记录。 $ ls -a . .. .git README.md runoob-test.txt test.txt $ cd .git $ ls HEAD description index logs packed-refs config hooks info objects refs 默认情况下,Git 会按照你提供的 URL 所指向的项目的名称创建你的本地项目目录。 通常就是该 URL 最后一个 / 之后的项目名称。如果你想要一个不一样的名字, 你可以在该命令后加上你想要的名称。 例如,以下实例拷贝远程 git 项目,本地项目名为 another-runoob-name: $ git clone https://github.com/tianqixin/runoob-git-test another-runoob-name Cloning into 'another-runoob-name'... remote: Enumerating objects: 12, done. remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 12 Unpacking objects: 100% (12/12), done.
我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。
克隆仓库的命令格式为:
git clone <repo>
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
参数说明:
- repo:Git 仓库。
- directory:本地目录。
比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
$ git clone git://github.com/schacon/grit.git
执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
配置
git 的设置使用 git config 命令。
显示当前的 git 配置信息:
$ git config --list
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
编辑 git 配置文件:
$ git config -e # 针对当前仓库
或者:
$ git config -e --global # 针对系统上所有仓库
设置提交代码时的用户信息:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果去掉 --global 参数只对当前仓库有效。

浙公网安备 33010602011771号