git init 用法
1 概述
Git 使用 git init
命令创建一个空的仓库,基本上就是在当前目录下创建一个 .git 目录,目录下面存储着仓库的各项信息。
在一个已经创建过 Git 仓库的目录下执行 git init
命令也是没有问题的,它不会去重写任何已经存在的内容。最主要的原因,在已有的 Git 仓库下执行该命令就是获取新添加的模板。
如果带上路径执行 git init <path>
命令,它会在 <path>
目录下创建 .git 目录,如果该路径不存在,Git 同时也会创建该目录出来。比如命令:
$ git init hello
Initialized empty Git repository in hello/.git/
将同时创建 hello 与 .git 两个目录,并初始化 Git 仓库。
2 命令参数详解
查阅命令帮助信息:
git init --help
以下是 git init
命令支持的参数及其简要说明:
-q, --quiet
: 使用静默模式,仅打印错误或警告信息。--bare
: 创建一个裸仓库。使用这个参数时,Git 不会在当前目录下创建 .git 目录,而是将整个个目录转换成一个裸仓库。祼仓库不包含工作目录,只有 .git 目录中的内容。这种仓库通常用于远程仓库的服务器,因为用户不会直接在裸仓库中编辑文件。--template=<template-directory>
: 指定一个模板目录,Git 将从这个目录复制文件创建 .git 目录。默认的模板目录是/usr/share/git-core/templates
,模板目录下一般包含 hooks, info 与 branches 等子目录。--separate-git-dir=<git-dir>
: 这个参数允许你指定.git
目录的位置,而不是在默认位置(即当前目录下),这对于那些想要将工作目录和 Git 目录分享的情况很有用。--shared[=<perm>]
: 设置新仓库的共享模式。如果指定了<perm>
则设置为特定的权限模式,如果不指定,默认为group
权限,即所有组成员都有可以推送到仓库。-b <branch-name>, --initial-branch=<branch-name>
: 在新创建的仓库中为初始分支使用指定的名称。如果未指定,则使用默认名称(当前为 master,但将来可能会更改;可以通过 init.defaultBranch 配置变量自定义名称)。
需要注意的是,虽然 git init 提供了这些选项,但最常见的用法是简单地不带任何参数地运行它,以便在当前目录中初始化一个新的 Git 仓库。如果你正在为远程仓库准备一个目录,则可能会使用 --bare
选项。
3 用法说明
3.1 Git 基础配置
在正式使用 Git 之前,我们需要配置 Git 提交时所使用的用户名与邮箱地址,配置指令如下:
git config --global user.name "Your Name"
git config --global user.email "your@mail.com"
3.2 简单示例
git init
git add .
git commit -m 'Init import repository'
- 创建一个
.git
目录; - 将当前路径下的所有文件添加到 Git 仓库的缓存区;
- 将缓存区的文件提交到 Git 仓库。
3.3 远程仓库
虽然 git init
创建的是本地仓库,但利益于 Git 的强大的分布式特性,我们可以将本地仓库与远程仓库关联,方便进行远程仓库的代码推送与拉取。
git remote add origin <repository-url>
git push -u origin master
注意: git push -u
命令实际上是 git push
命令的一个变体,其中 -u
或 --set-upstream
选项的加入具有特定的作用。
具体来说,git push -u <remote> <branch>
命令的作用包括两部分:
- 推送本地分支到远程仓库:首先,这个命令会将指定的本地分支(
<branch>
)推送到指定的远程仓库(<remote>
)中对应的分支上。如果远程分支不存在,Git 会自动创建它。 - 设置上游跟踪分支:更重要的是,
-u
或--set-upstream
选项告诉 Git 将这个远程分支设置为当前本地分支的上游跟踪分支(upstream tracking branch)。这意味着,之后你可以直接使用git pull
来拉取远程分支的更改并合并到你的本地分支,而无需指定远程仓库和远程分支名;同样地,使用git push
时,如果不带任何分支名,Git 会自动推送这个本地分支到其上游跟踪的远程分支。
简单来说,git push -u
一次性完成了推送和设置上游跟踪分支两个步骤,使得之后的操作更加简便。
4 结语
git init
命令是 Git 版本控制系统中用于初始化新仓库的关键命令。它通过在当前目录下创建一个 .git 隐藏文件夹来准备项目进行版本控制,并为后续的各种 Git 操作奠定基础。无论是个人项目还是团队协作项目,git init
都是开始使用 Git 进行版本控制的第一步。
5 参考资料
[1] git init --help
[2] man git-init
[3] Git系列:git init 深入理解及其使用技巧