Git 基本操作

613 阅读2分钟

Git基本操作

git init --- 初始化仓库

要使用Git进行版本管理,必须先初始化仓库。Git是使用git init命令进行初始化操作。

mkdir git-tutorial
cd git-tutorial
git init
已初始化空的 Git 仓库于 /Users/xxxx/Desktop/git-tutorial/.git/

如果初始化成功,执行了git init命令的目录就会生成.git目录。这个.git目录里存储着管理当前目录内容所需要的仓库数据。 在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照。

git status ---- 查看仓库的状态

git status命令用于显示git仓库的状态。非常有用,务必牢记。 工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作过程中时常使用git status命令查看当前状态。 我们建立 README.md 文件作为管理对象,为第一次提交做前期准备,使用git status命令查看当前状态.

   $git status
位于分支 master

尚无提交

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)

	readme.md

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

git add --- 向暂存区添加文件

如果只用Git仓库的工作树创建了文件,该文件兴地被记入Git仓库的版本管理对象中。因此我们用git status命令查看readme.md文件时,它会显示在未跟踪文件中。 想要让文件成为Git仓库的管理对象。就需要用git add命令将其加入暂存区。暂存区是提交前的一个临时区域。

$git add readme.md
$git status

位于分支 master

尚无提交

要提交的变更:
  (使用 "git rm --cached <文件>..." 以取消暂存)

	新文件:   readme.md

将readme.md文件加入暂存区后,git status命令显示的结果发生了变化。readme.md文件处于要提交的变更中。

git commit ----保存仓库的历史记录

git commit命令将当前暂存区的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件。

  • 记述一行提交信息
    git commit -m "提交的功能描述或简述"
    -m参数后的文本信息称为提交信息,是对这个提交的概述
  • 记述详细提交信息
    如果想要记述更加详细的,不要使用-m参数,直接执行git commit命令后,vim编辑器会启动,显示如下结果。
# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 说明将会终止提交。
#
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#       新文件:   readme.md

在编辑器中记述提交信息的格式如下:

  • 第一行:用一行的文字简述提交的更改内容
  • 第二行:空行
  • 第三行:记述更改的原因和详细内容

只要按照上面的格式输入,今后便可以通过确认日志的命令或工具 看到这些记录。 在以#(井号)标为注释的Changes to be committed(要提 交的更改)栏中,可以查看本次提交中包含的文件。将提交信息按格式 记述完毕后,请保存并关闭编辑器,以 #(井号)标为注释的行不必删 除。随后,刚才记述的提交信息就会被提交。

  • 中止提交
    直接关闭编辑器,提交会随即终止

  • 查看提交后的状态
    执行完git commit命令后再来查看状态

$ git commit -m "add readme.md file"                            
[master(根提交) ef26724] add readme.md file
 1 file changed, 1 insertion(+)
 create mode 100644 readme.md
 git status                                                    
位于分支 master
无文件要提交,干净的工作区

当前工作树处于刚刚完成提交的最新状态,所以结果显示没有更改。

git log ---- 查看提交日志

git log命令可以查看以往仓库中提交的日志,包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎么样的差别

$ git log
commit ef26724aeaedc087fe1fd955df1c623f6d78d235 (HEAD -> master)
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date:   Thu Nov 14 20:21:58 2019 +0800

    add readme.md file
  • 只显示提交信息的一行
    git log --pretty=short
  • 只显示指定目录、文件的日志
    git log readme.md
  • 显示文件的改动
    如果想查看提交所带来的改动,可以加上 -p参数,文件的前后差 别就会显示在提交信息之后。 git log -p 查看具体文件的前后差别 git log -p readme.md

git diff --- 查看更改前后的差别

git diff 命令可以查看工作树、暂存区、最新提交之间的差别. 我们在刚才的readme.md文件中添加如下内容:

# Git 基础教程
  • 查看工作树和暂存区的差别
    执行git diff命令,查看当前工作树与暂存区的差别
diff --git a/readme.md b/readme.md
index 8e66654..9be2bbd 100644
--- a/readme.md
+++ b/readme.md
@@ -1 +1 @@
-new file content
+# Git 基础教程

我们没有用git add命令向暂存区添加任何东本。所以只会显示工作树与最新提交状态之间的差别。

"+"号标出的是新添加的行,被删除的行则用“-”号标出。我们可以看到,这次只添加了一行,删除了一行。

接着使用git add命令将文件添加到暂存区 git add readme.md

  • 查看工作树和最新提交的差别
    如果我们现在执行git diff命令,由于工作树和暂存区的状态并无差别,结果什么都不会显示。此时要查看与最新提交的差别,要执行git diff head
diff --git a/readme.md b/readme.md
index 8e66654..9be2bbd 100644
--- a/readme.md
+++ b/readme.md
@@ -1 +1 @@
-new file content
+# Git 基础教程

不妨养成这样一个好习惯:在执行 git commit命令前先执行 git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针。

$ git commit -m "file modify"                                   
[master 57c6fbf] file modify
 1 file changed, 1 insertion(+), 1 deletion(-)

保险起见,我们查看一下提交日志,确认提交是否成功。以下操作成功查到了第二个提交

$ git log
commit 57c6fbfaf1b515b9e2004b4cb898ae60d52232a0 (HEAD -> master)
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date:   Thu Nov 14 20:48:13 2019 +0800

    file modify

commit ef26724aeaedc087fe1fd955df1c623f6d78d235
Author: pinghua.yuan <pinghua.yuan@ushow.media>
Date:   Thu Nov 14 20:21:58 2019 +0800

    add readme.md file