2015年4月20日星期一

Git_002:学习笔记之二:版本库基本操作 (摘录+整理)

版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1. 创建版本库
(1)选择一个合适的地方,创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/maping/learngit
(2)初始化版本库
$ git init
Initialized empty Git repository in /Users/maping/learngit/.git/
现在成功初始化了一个空的仓库,变成了Git可以管理的仓库。
你会发现在当前目录下多了一个隐藏目录:.git,这个目录是Git来跟踪管理版本库的。

2. 添加文件到版本库
所有的版本控制系统,其实只能跟踪文本文件的改动,Git也不例外。
因此要真正使用版本控制系统,就要以纯文本方式编写文件,因为文本是有编码的,这里强烈建议使用标准的UTF-8编码。
(1)创建一个readme.txt文件,放到learngit目录下,其内容如下:
Git is a version control system.
Git is free software.
(2)把文件添加到仓库
$ git add readme.txt
(3)把文件提交到仓库
$ git commit -m "wrote a readme file"
[master (root-commit) ee16322] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
git commit 命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。
git commit 命令可以一次提交很多文件,所以你可以执行多次git add命令添加多个不同的文件,然后在执行一次git commit 命令提交所有添加的文件。

3. 修改文件
(1)修改readme.txt文件内容,修改后内容如下:
Git is a distributed version control system.
Git is free software.
现在,运行 git status 命令看看状态:
$ git status
[master (root-commit) ee16322] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
MaPingdeMacBook-Pro:learngit maping$ vim readme.txt
MaPingdeMacBook-Pro:learngit maping$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." 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 diff readme.txt 命令查看具体修改了什么内容
$ 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 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件的步骤是一样的。
$ git add readme.txt
再次运行 git status 命令查看状态
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

    modified:   readme.txt

git status告诉我们,将要被提交的修改包括readme.txt,接下来就可以放心地提交了。

$ git commit -m "add distributed"
[master 6719ef3] add distributed
 1 file changed, 1 insertion(+), 1 deletion(-)

提交后,再用 git status 命令看看仓库的当前状态:
$ git status
On branch master
nothing to commit, working directory clean

git status 告诉我们当前没有需要提交的修改,而且工作目录是干净的。

没有评论: