Git 快速上手

Git安装完毕,接下来就可以使用Git管理我们的项目代码了。对于一般开发者来说,Git常用的高频命令有10多个,掌握这些常用命令的使用,基本上就可以快速上手了。

假如现在有一个项目,所有的代码源文件和文档都放在demo目录下,我们可以按照下面的命令去创建一个仓库、修改文件、将文件添加到版本库中:

# mkdir demo                创建一个项目工程目录
# cd demo                   进入到项目工程目录
# git init                  在当前目录下,创建一个本地版本仓库
# touch main.c              创建一个文件
# git status                查看当前文件的状态
# git add main.c            修改main.c并将修改暂时保存起来
# git status                使用git add后再次查看当前文件状态,比较有什么不同
# git commit -m "init repo and add main.c to repo"  将文件的修改提交到本地仓库中
# git log                   查看提交历史
# git show commit_id        查看具体某一个提交的修改变化

在demo目录下,我们可以直接通过git init命令来创建一个本地仓库,创建成功后,使用ls -a命令,在demo目录下会有一个隐藏的.git目录

root@ubuntu:/home/demo# ls -a
.  ..  .git

这个.git目录就是我们创建的版本库,我们以后添加的文件、对文件做的各种修改,都会保存在这个版本库里。进入.git目录,你会发现里面还有很多子目录。

root@ubuntu:/home/demo/.git # tree
.
├── branches
├── config
├── description
├── HEAD
├── hooks
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags

不同的目录存放不同的数据,我们的文件、文件修改一般都是保存在objects下面,我们创建的不同分支保存在branches下面,给软件打的不同标签则保存在refs/tags下面。因为现在还没有提交什么文件,所以仓库里空空如也。

重新回到demo目录,在当前目录下,我们可以使用touch命令去创建一个main.c文件,并使用git status命令查看当前目录下,也就是工作区的文件状态。

root@ubuntu:/home/demo# touch main.c
root@ubuntu:/home/demo# ls
main.c
root@ubuntu:/home/demo# git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    main.c

nothing added to commit but untracked files present (use "git add" to track)

通过git status命令的提示信息,我们可以看到,有一个main.c文件处于“未被追踪状态”,如果你想让版本管理工具跟踪记录main.c的变化,首先要使用git add命令将当前工作区的文件添加到暂存区。

root@ubuntu:/home/demo# git add main.c 
root@ubuntu:/home/demo# git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   main.c

使用git add命令,将main.c添加到暂存区后,再次使用git status命令查看当前目录下的文件状态,系统会提示你:当前有一个新的修改:有一个新的文件main.c可以提交(commit)到本地仓库中。我们可以使用git commit命令将暂存区里的修改提交到本地仓库。

root@ubuntu:/home/demo# git commit -m "Init repo and add main.c to repo"
[master (root-commit) 8f28bf9] Init repo and add main.c to repo
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 main.c

root@ubuntu:/home/demo# git status
On branch master
nothing to commit, working tree clean

root@ubuntu:/home/demo# git status
On branch master
nothing to commit, working tree clean

提交成功后,再次使用git status命令查看当前目录下的文件状态,系统会提示你:当前工作区是干净的,没有新的修改需要提交到版本库中。

git commit -m参数后面的字符串表示提交的信息说明:你的这次提交做了什么修改,修改了哪些文件,实现了哪些新的功能,或者修正了哪个bug,都可以在提交信息说明里描述清楚。这样,别人就可以通过git log命令来查看某一个提交的具体信息:

root@ubuntu:/home/demo# git log
commit 8f28bf983040f25a24c6a49ce6fe6cf1607e5399 (HEAD -> master)
Author: “litao.wang” <3284757626@qq.com>
Date:   Wed Sep 23 06:56:23 2020 -0700

    Init repo and add main.c to repo

我们的每一个提交,Git都会使用一个40个长度的16进制字符串标识,这个数字是通过对修改的文件做哈希运算得出的,一般也成为commit ID。每一个commit提交,都包含提交者的姓名、邮箱联系方式、提交的日期、提交的信息说明。我们根据这些信息,就基本上知道这个提交大致做了什么工作、修改了哪些东西,如何跟这个提交的作者进行联系。

当然,如果你想看看这个提交具体修改了哪些东西,可以使用git show命令来查看:

root@ubuntu:/home/demo# git show 8f28bf98
commit 8f28bf983040f25a24c6a49ce6fe6cf1607e5399 (HEAD -> master)
Author: “litao.wang” <3284757626@qq.com>
Date:   Wed Sep 23 06:56:23 2020 -0700

    Init repo and add main.c to repo

diff --git a/main.c b/main.c
new file mode 100644
index 0000000..639c213
--- /dev/null
+++ b/main.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main (void)
+{
+    return 0;
+}

git show命令后面紧跟的就是某个commit提交的ID值,一个40位的16进制数字,为了书写方便,一般我们只写40位中的前6位或前8位就可以了,一般不会跟其他的ID发生同名冲突。

《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客