GIT仓库管理

今天,从两个方面来讲一讲Git的仓管。建立仓库以及跟踪仓库里文件的变化。

获取Git仓库

获取git仓库有两种方法:

  • 将本地未初始化的目录作为仓库目录
  • 从远程主机克隆一个已存在的Git项目

下面来演示这两种方法:

# mkdir learngit
# cd learngit/
# git init
Initialized empty Git repository in /root/learngit/.git

这样,一个本地的仓库就建立完了。接下来看如何从远程克隆仓库。

# mkdir learngit2
# cd learngit2
# git clone git@github.com:*****/blog.git learngit2

该指令表示从远程克隆Git仓库,并将目录修改为learngit2。默认没有该参数的话,目录名即为blog。

追踪仓库的每一次更新

首先需要讲述下文件的状态,从大的方面来说,文件的状态有两种:

  • 未跟踪(Untracked)
  • 已跟踪

已跟踪的状态又分为未修改、已修改、已暂存。未跟踪的文件表示版本库没有跟踪该文件。

下面,我们来演示这几种文件的状态。

首先,在项目目录下新建立一个文件

# touch README.md

然后,我们来查看该文件的状态。git status 可以列出文件的状态,如果不加文件则表示列出所有的。

# git status README.md 
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# README.md
nothing added to commit but untracked files present (use "git add" to track)

可以看到,README.md状态是untracked。现在,我们再建立一个文件,并将添加到暂存区,然后看看该文件的状态。

# cat > index.php <<eof
> <?php
> phpinfo();
> eof
# git add index.php
# git status index.php
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
# new file:   index.php
#

只要出现在Changes to be committed下面的文件即表示该文件是已暂存状态。然后,将index.php文件再修改,看看会出现什么情况。

# git status index.php 
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
# new file:   index.php
#
# 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:   index.php
#

看到没有,index.php文件即出现在了暂存区,也出现在了非暂存区。大家注意了哦!这种情况是经常出现的哦。

git add

该命令的作用有,跟踪新的文件、将修改的文件提交到暂存区、将合并时候出现冲突的文件标记为已解决的状态。

查看修改

如何向查看工作区和暂存区文件的修改。直接使用git diff即可。

# git diff 1.txt 
diff --git a/1.txt b/1.txt
index 3b18e51..a042389 100644
--- a/1.txt
+++ b/1.txt
@@ -1 +1 @@
-hello world
+hello world!

那么如何查看暂存区和仓库的修改的。这个时候需要加上–staged选项。

# git diff --staged 1.txt 
diff --git a/1.txt b/1.txt
new file mode 100644
index 0000000..3b18e51
--- /dev/null
+++ b/1.txt
@@ -0,0 +1 @@
+hello world

总结一下

  • 查看工作区和暂存区文件的修改,使用git diff [文件名]
  • 查看暂存区和仓库文件的修改,使用git diff –staged [文件名]

提交更新

我们使用git commit 提交更新,让暂存区的内容提交到仓库里。

一般的,我们喜欢用-m选项,将本次提交的更新信息写在一起。如下:

# git commit -m 'first commit.add a txt file'

如果你不添加-m选项的话,会跳出一个编辑器,让你在编辑器里提交更新的信息。如果你更新的内容较多的话,一两句说不完,那么建议使用该方法。