如何创建一个版本库(repository)
选择一个合适的地方创建一个空目录
$ mkdir learngit $ cd learngit $ pwd
pwd用于显示当前目录
通过git init命令把这个目录变成Git可以管理的仓库
$ git init Initialized empty Git repository in C:/Users/Administrator/Documents/GitHub/learngit/.git/
这样,一个版本库就成功建好了。在当前目录下会多一个.git的目录,这个目录是git用来跟踪管理版本库的,没事不要手残乱改,否则就破坏了Git仓库。
如何把一个文件添加到版本库
- 把要添加的文件放到learngit目录下(子目录也可以)(PS:放到其他位置Git找不见的)
用命令 git add 告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
用命令 git commit 告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file" [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
对于git commit命令,-m后面输入的是本次提交的说明,可以输入任何内容,这样方便从历史记录中找到改动记录。
为什么Git添加文件需要 add commit 两步呢?因为 commit 可以一次提交很多文件,所以可以多次 add 不同的文件,example:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
修改文件后重新添加到版本库
我们添加了一个readme.txt文件后,可以继续修改readme.txt文件。修改后可以运行 git status 命令查看结果:
$ git status
# On branch master
# 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: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt被修改了,但是到底修改了什么内容该怎么看呢?可以使用 git diff 这个命令查看:
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Hello
+Hello World
git diff 就是查看difference,显示的正确格式是Unix通用的diff格式。可以从上面的命令输出看出,我们在第一行添加了一个“World”单词。
知道了对文件做了什么修改之后,我们就可以把它放心的提交到仓库了。提交仓库依然是分两步:
第一步:
$ git add readme.txt
在执行第二步 git commit 之前,我们可以再运行一下 git status 查看当前仓库的状态:
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: readme.txt #
git status 告诉我们,将要被提交的修改包括readme.txt,这下就可以放心提交了:
第二步:
$ git commit -m "add World" [master ea34578] add World 1 file changed, 1 insertion(+), 1 deletion(-)
提交后,我们再用 git status 命令查看当前仓库的状态
$ git status # On branch master nothing to commit (working directory clean)
Git告诉我们当前没有需要提交的修改,而且工作目录是干净的。