1、git init
初始化仓库
$ git init
2、git add
指定所需要的文件来进行跟踪。
$ git add *.c
$ git add LICENSE
$ git add <directory path>
:如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。
这是一个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
3、git clone
克隆现有的仓库。
- 克隆Git的链接库libgit2
$ git clone https://github.com/libgit2/libgit2
- 克隆远程仓库时,自定义本地仓库的名字
$ git clone https://github.com/libgit2/libgit2 mylibgit
4、git status
查看哪些文件处于什么状态。
4.1、跟踪新文件
示例:
$ git add README
此时再运行git status
命令,会看到README文件已被跟踪,并处于暂存状态:
只要在
Changes to be committed
这行下面的,就说明是已暂存状态。如果此时提交,那么该文件在你运行git add
时的版本将被留存在后续的历史纪录中。
4.2、暂存已修改的文件
&esmp;修改一个已被跟踪的文件。如果你修改了一个名为CONTRIBUTING.md
的已被跟踪的文件,然后运行git status
命令,会看到下面内容:
文件CONTRIBUTING.md
出现在Changes not staged for commit
这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行git add
命令。
现在两个文件都已暂存,下次提交时就会一并记录到仓库。
4.3、状态简览
git status -s
或git status --short
:用于简短的方式查看更改。
README
文件在工作区已修改但尚未暂存。lib/simplegit.rb
文件已修改且已暂存。Rakefile
文件已修改,暂存后又作了修改,因此该文件的修改中即有已暂存的部分,又有未暂存的部分。
- 新添加的未跟踪文件前面有 ??标记。
- 新添加到暂存区中的文件前面有A标记。
- 修改过的文件前面有M标记。
输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。
5、.gitignore
一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以创建要给名为.gitignore
的文件,列出要忽略的文件的模式。
文件gitignore
的格式规范如下:
- 所有空行或者以
#
开头的行都会被Git忽略。 - 可以使用标准的glob模式匹配,它会递归地应用到整个工作区中。
- 匹配模式可以以(
/
)开头防止递归。 - 匹配模式可以以(
/
)结尾指定目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加叹号(
!
)取反。
所谓的glob模式是指shell所使用的简化了的正则表达式。星号(
*
)匹配零个或多个任意字符;[abc]
匹配任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);问号(?
)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]
表示匹配所有0到9的数字)。使用两个星号(**
)表示匹配任意中间目录,比如a/**/z
可以匹配a/z
、a/b/z
或a/b/c/z
等。
.gitignore
文件示例:
# 忽略所有的.a文件
*.a
# 跟踪所有的lib.a,即便你在前面忽略了.a文件
!lib.a
# 只忽略当前目录下的TODO文件,而不忽略subdir/TODO
/TODO
# 忽略任何目录下名为build的文件夹
build/
# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt
# 忽略doc/目录及其所有子目录下的.pdf文件
doc/**/*.pdf