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的三个工作区域
- 工作区
是我们直接编辑的地方,例如 Android Studio 打开的项目,记事本打开的文本等,肉眼可见,直接操作。 - 暂存区
数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。 - 版本库
存放已经提交的数据,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 ---查看文件