`
yanfaguanli
  • 浏览: 661477 次
文章分类
社区版块
存档分类
最新评论

Git的基本用法

阅读更多
Git有一个好处,在本地的每一个项目都是一个完整的仓库,除了需要从网络拉取和推送到网络之外,其他所有的操作都可以在本地完成。
本文简单地介绍如何在本地使用Git来对文件进行管理,下一篇文章再来说一下分支的管理。
根据文件在 Git中 的状态,可将其内部分为三个工作区域:

1)工作目录
如果拿 Git 来管理项目的源代码,那工作目录就是一个Workspace。其中的源代码文件可根据其是否纳入Git的管理流程分为三类:
1.1)Untracked:未纳入Git管理流程的
1.2)Tracked:已纳入Git管理流程的
对于已纳入Git管理流程的可以再分为三类:
a)已修改,未暂存的 (Changes not staged for commit)
b)已修改,已暂存的,未提交的 (Changes to be committed)
c)已提交,未修改的 (commited)
1.3)不纳入Git管理流程的(在.gitignore文件中定义)

2)暂存区域
对于未纳入Git管理流程的文件和已纳入Git管理流程中处于 a)状态的文件,可以使用add命令来将其添加到暂存区域:

          git add a.file

此时,a.file就会被保存到暂存区域。

3)本地仓库
对于已保存在暂存区域中的文件,可以使用commit命令,将其添加到本地仓库,如下:

          git commit -m "Commit Staged files"

指定 -m 参数,可以后面添加对提交内容的注释信息。
如果不指定 -m 参数,则 Git 会跳转到一个vi输入界面,等待用户输入注释信息之后,再提交。

利用Git在本地分支上进行开发工作,一般的流程如下:
1)先利用git status查看一下当前的工作目录状态:
$ git status
# On branch master
nothing to commit (working directory clean)

2)添加一个文件 test.txt,再查看一下其状态,如下:
$ touch test.txt

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

可看到,在Untracked files:下面存在一个test.txt文件,而最下面一行则提示没有文件需要提交,但是存在未跟踪的文件(未跟踪,也即未纳入Git管理流程),此时 test.txt 文件就是处于未纳入管理流程的状态。

另外一种情况,修改已纳入Git管理流程的文件,再查看其状态:
$ echo "Add content to end of the a.txt" >> a.txt

$ 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:   a.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test.txt
no changes added to commit (use "git add" and/or "git commit -a")

可以看到,对于a.txt文件,其已纳入Git管理流程,所以其显示的是Changes not staged for commit,即上面所述的状态 a)。

3)利用 git add 命令将其添加到暂存区域

对于未纳入Git管理流程的文件, add 命令可将其纳入Git管理流程,同时将其添加到暂存区域。
对于已纳入Git管理流程的文件,add 命令可将修改过的文件添加到暂存区域。
切记,只有添加到暂存区域的文件,才能够提交到本地仓库。

$ git add test.txt

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   test.txt
#
# 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:   a.txt
#

利用add命令,将test.txt文件添加到暂存区域(Changes to be commited),可看到test.txt已经是处于暂存区域,等待提交了,其状态就是上述状态中的 b)状态了。

同样的,利用add命令添加a.txt,如下:
$ git add a.txt

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   a.txt
#       new file:   test.txt
#

可看到,上面两个文件都被加入到暂存区域了。

4)利用 git commit 命令,将暂存区域的文件保存到本地仓库。

在这里要记住一点,提交(commit)做的操作是将暂存区域里面的内容保存到本地仓库。那些处于已修改,但还未添加到暂存区域的文件是不会被提交的。

在命令行输入:
git commit

Git 会启动文本编辑器,让用户输入本次的提交说明,如下:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   a.txt
#       new file:   test.txt

当用户输入提交信息之后,保存在暂存区的内容就会被保存到本地的仓库了。
$ git commit
[master d15838d] Commit the changes
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 test.txt

可看到,在提交成功之后,Git会计算出一个Hash值(如上面,最前面几位是:b9692eb),作为这次提交的标识值,可利用git log来查看。

另外,可以在git commit 命令行上指定 -m 参数,后面带上提交的注释信息,则Git会直接将-m参数指定的内容作为提交信息,直接提交到本地仓库,不再需要去编辑界面。

$ git commit -m "Add new files"

到这里,可以看出Git在本地某一分支上的一般流程如下:

(0)工作目录中,创建文件。
(1)编辑文件,利用 add 添加进暂存区域。
(2)利用 commit 将暂存区域的文件保存到本地仓库。
(3)编辑文件,利用 add 将其添加进暂存区域,回到(2)步,如此循环。

对于已经纳入Git管理流程的文件,每一次修改之后,都需要利用先add(添加到暂存区域),再commit(提交到本地仓库),这是比较麻烦的,可以直接在commit命令指定 -a 参数,则可以一步执行两个操作,如下:

$ git commit -am "Add and then Commit"

但是对于未纳入Git管理流程的文件,则不能这么做,必须先显式使用add命令将其纳入Git管理流程,保存进暂存区域,再提交。


5)利用 git rm 将文件从跟踪状态变成未跟踪状态,即不再纳入Git管理流程,如下:
$ git rm b.txt
rm 'b.txt'

查看其状态:
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    b.txt
#

同样的,这次删除操作也会被保存进暂存区域,直接提交了,才是真正从本地仓库中删除了,如下:
$ git commit -m "delete b.txt"
[master 2daa294] delete b.txt
 0 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 b.txt

而此时,b.txt文件也从工作目录中被删除了。
$ ls
a.txt  c.txt  d.txt  test.txt

如果只是想从Git管理流程中删除此文件,而想在工作目录中保存此文件的话,则需要指定参数 --cached,如下:
$ git rm --cached d.txt
rm 'd.txt'

查看状态可发现d.txt已经存在于Untracked files下面了:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    d.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       d.txt

提交之后,再看一下Git状态:
$ git commit -m "remove d.txt from git"
[master d625705] remove d.txt from git
 1 files changed, 0 insertions(+), 1 deletions(-)
 delete mode 100644 d.txt

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

最后,还可以使用log命令来查看多次的提交信息,如下:
$ git log
commit d62570527d545ae2677708ac2f9b015aab2df86f
Author: linmiansheng <sheepjtgjfc@163.com>
Date:   Tue Jun 17 14:31:10 2014 +0800

    remove d.txt from git

commit 2daa294a500bf9b3b0af7fe586353d882f0c3592
Author: linmiansheng <sheepjtgjfc@163.com>
Date:   Tue Jun 17 14:27:50 2014 +0800

    delete b.txt

commit d15838d91e2c09e5e25a0a348e4dfb27c7e6b928
Author: linmiansheng <sheepjtgjfc@163.com>
Date:   Tue Jun 17 14:18:28 2014 +0800

    Commit the changes

commit b52882cca685b024991dec8b976c35a1cbc6c9cf
Author: linmiansheng <sheepjtgjfc@163.com>
Date:   Tue Jun 17 14:11:13 2014 +0800

结束。

分享到:
评论

相关推荐

    如何使用git基本用法

    如何使用git基本用法

    Git基本用法.md

    公司内部技术培训使用,GIT内部培训资料,MD格式,便于技术人员对Git的原理理解 和 基本使用

    git基本用法(包括github)

    包括git的使用方法及github的应用,建分支等。

    git的基本用法

    git的基本用法

    git基本操作演示ppt

    用于git培训,演示基本的git知识、安装和一些操作命令。

    git的基本使用

    快速的学习git使用方法,适合新手看,简单使用只需要几个命令,就能让程序编写更方便.

    git必知命令

    git必知必会总结,该文档总结了git基本用法,可以应对大部分新手面临的困难

    git原理详解及实用指南(好书).rar

    1.git基本用法 2.git高级用法 3.git概念和本质 4.git中常见问题的处理方式 5.git中的高级需求解决方案

    git用法以及基本的应用

    git用法以及基本的应用

    git仓库基本用法.txt

    这是一个开发项目中git仓库的基本用法

    Git版本管理用法详解

    本文从Git的历史,安装与配置开始介绍,全文包含基本用法、SVN转Git、协同开发、在线Web浏览等诸多方面,最重要的是,本文还详细列举了一些源自作者多年社区协作经验的技巧。文章最后给出了项目管理相关的一些开源...

    git常规用法

    git常规用法!大家可以看看 都是一些基本的操作!

    精通Git(第二版简体中文)_带书签

    如果你刚刚启程探索Git,本书对于Git的用法、基本命令和分支机制的讲解将助你轻松入门、不走弯路。 如果你在Git之路上已经走了一些时日,本书关于Git服务器、配置文件和钩子系统的内容将为你补充继续前行所需的能量...

    git使用说明.rar

    记载了git的基本使用命令,还有遇到冲突的解决方法,提交错误的回退方法,git命令的使用步骤,git的安装使用等

    git入门学习实验笔记

    git学习的实验笔记 在Linux上从零开始用实验验证每一个命令的用法,以及思考验证。

    Git开发操作文档 全面介绍Git技术

    这份Git开发操作文档是一份全面介绍Git技术的文档,内容包括了Git的基本概念、使用方法和常见问题解决方案,以及Git在版本控制和协同开发中的应用。 该文档首先介绍了Git的基本概念和原理,包括Git的工作流程、版本...

    Git权威指南PDF完整版

    3.1 在Linux 下安装和使用 Git/ 22 3.1.1 包管理器方式安装/ 22 3.1.2 从源代码进行安装/ 23 3.1.3 从Git版本库进行安装/ 23 3.1.4 命令补齐/ 25 3.1.5 中文支持/ 25 3.2 在Mac OS X 下安装和使用 Git/ 26 3.2.1 以...

    Git Community Book 中文版

    接下来,我们会讲一些Git的基本用法,那些你将在90%的时间都在使用的命令。这些东东能给一个不错的使用的基 础,也许这些命令就是你将使用的全部命令。这一节大约会你30分钟的时间来读。 Git Community Book 中文版 ...

    git应用实例

    针对工作中一些git的基本使用方法。从构建git服务器、gitolite管理、git管理员操作等。

Global site tag (gtag.js) - Google Analytics