Git学习记录(一)初始化、提交

What?

Git是一款免费的分布式文件版本控制软件,简单的来说就是实现文件历史管理的工具。

Why?

  • 首先举个例子来说明一下Git的作用:

1.第一天,你终于完成项目v1.0的开发

printf("Hello v1.0");

2.第二天,你想到这个项目可以优化一下,于是发布了v1.1

printf("Hello v1.1");

3.第三天,你发现你上线的项目功能虽好但是部分机型不稳定,极易出现Bug,你需要退回最开始的版本

如果你v1.0和v1.1之间改了很多,你是不是要觉得崩溃了!!!

但是这时候用Git做版本控制,就不会有这样的问题

你每次修改了程序commit一下,然后你想回退到之前的版本,只要输入reset加版本号就可以了,岂不是很方便!

  • 另外

Github是世界上最大的软件远程仓库,也是使用Git做的分布式版本控制。

当你需要和小伙伴一起开发一个小软件的时候,就可以将代码发布到Github上来实现合作开发。

所以啊,使用Github,首先肯定要先学会Git!

How?

  • 安装Git

首先需要去官网下一个Git,地址是:
https://git-scm.com/download/win
完成安装后有个程序叫git bash,打开git hash就能开始使用了!

  • 初始化Git

我们先把个人信息告诉Git,包括名字和邮箱,这样Git就能知道你的身份了(我们就知道Bug是你写的了,哈哈哈哈)

$ git config --global user.name "hjc"
$ git config --global user.email "1092938015@qq.com"

然后到指定的目录执行以下的命令

$ git init

这样一个Git版本库就创建好了,此时当前目录中还多了一个 .git 目录,这个目录中的信息可以帮助Git来跟踪管理版本库,所以千万不能删除。(.git目录是隐藏目录,需要使用ls -ah 命令才能看到)

  • 操作Git

先介绍一下Git的三个工作区域

  1. 工作区
    是我们直接编辑的地方,例如 Android Studio 打开的项目,记事本打开的文本等,肉眼可见,直接操作。
  2. 暂存区
    数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。
  3. 版本库
    存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程仓库(Github)了。

下面是,当开发者通过 git 修改数据时,各区之间的数据传递流程示意图。

现在我们在目录下创建一个新的文件,命名为file1.txt

touch file1.txt

编辑该文件

vim file1.txt

输入i开始插入
在文本中输入

New Content in file1.txt

按Esc和Shift+zz结束编辑
然后我们使用git add将新文件添加到暂存区

$ git add file1.txt

再使用git commit添加至版本库,并说明本次改动的内容

$ git commit -m "Create a new file named file1.txt"

运行成功后,命令行中会提示1 file changed, 1 insertion(+),这样我们就能知道具体修改的内容

然后我们继续编辑file1.txt,对其进行修改,改成如下

New Content in file1.txt
More Content in file1.txt

运行git status查看结果

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   file1.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status可以帮助我们了解版本库的状态,上面的结果告诉我们file1.txt被修改了,但是新的修改没有提交,我们也可以用git diff比对工作区暂存区的内容

$ git diff
warning: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory
diff --git a/file1.txt b/file1.txt
index f1a6aea..e12f78e 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1,2 @@
 New Content in file1.txt
+More Content in file1.txt

tips:
git diff 比对工作区暂存区之间的内容
git diff head 比对工作区版本库之间的内容
git diff --cached 比对暂存区版本库之间的内容

修改完我们要修改的内容以后,我们再使用git add file1.txt添加至暂存区,使用git status 你会得到如下信息:

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   file1.txt

这告诉我们file1.txt中的改动需要被提交到版本库,我们直接使用git commit加上说明即可

$ git commit -m "add more info in file1.txt"

然后我们在使用git status就会发现当前目录是干净的,没有需要提交的内容:

On branch master
nothing to commit, working tree clean

注意:必须先用add命令提交到暂存库,才能使用commit

命令总结

$ git init   ---初始化git
$ git config --global user.name "yourename"   ---配置个人信息          
$ git config --global user.name "yourename@gmail.com"   ---配置个人信息 
$ git add .(或者这些填写指定的文件名称)    ---提交所有文件到暂存区
$ git commit -m "备注"   ---提交文件到版本库
$ git status   ---git当前状态
$ git diff   ---比对工作区与暂存区之间的内容
$ git diff head   ---比对工作区和版本库之间的内容
$ git diff --cached   ---比对暂存区和版本库之间的内容
$ touch file1.txt   ---创建文件
$ vim file1.txt   ---编辑文件
$ cat file1.txt  ---查看文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。