因为后来用了github,平时没怎么用到,git的一些命令渐渐忘记了。但是掌握git的基本原理和这些命令还是很有必要的,于是找到了廖雪峰老师的git教程,准备学一遍,并做笔记供以后翻阅。
Git是什么?
Git是一个版本控制工具,可以帮我们记录每次的改动,和改动的内容。
我们可以和别人合作编辑同一个文件,最后通过它合并在一起。Git和其他版本控制工具的区别
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。
集中式的版本控制系统有一个中央服务器,工作时从中央服务器获取最新版本,修改后再推送回去,最大的缺点就是需要联网。
分布式版本控制系统相当于每个人的电脑都是一个完整的版本库(中央仓库),无需联网便可进行版本的控制。分布式版本控制系统也有中央服务器的概念,但是没有集中式中那么重要,仅仅是方便很多人通过这个服务器进行文件的交换。
分布式版本控制系统安全性很高,其中一个人的版本库挂掉了,另外一台电脑上仍可以充当中央仓库,因为在本地保存着完整的版本历史。
增加一些对这个理解就是(引用评论):Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史
而SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行,所以需要联网 这样的好处在于:
1、自己可以在脱机环境查看开发的版本历史
2、多人开发时如果充当中央仓库的Git仓库挂了,任何一个开发者的仓库都可以作为中央仓库进行服务Git还有很强大的分支管理功能。
初始化一个Git的仓库
git init 命令初始化一个文件夹,初始化完成后,文件夹下会有.git文件夹,这个.git文件夹里是git的配置文件,不要乱动,在非实验的情况下也不要乱删除。
$ git init
Initialized empty Git repository in E:/GitRepsitory/LearnGit/.git/
$ ls -a
./ ../ .git/
我们可以看到已经有.git文件夹了。
git status可以查看当前工作区的状态,在未添加文件时我们可以git status一下看看。
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
可以看到提示nothing to commit,需要我们创建或者复制一个文件过来,使用git add命令。
新建一个README.MD文件,内容为This is my first use.
再使用git status命令看一下。
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.MD
nothing added to commit but untracked files present (use "git add" to track)
这时会看到我们已经添加了一个文件在工作区当中了,但是还没有git add,我们执行git add命令再git status查看。
$ git add README.MD
warning: LF will be replaced by CRLF in README.MD.
The file will have its original line endings in your working directory.
我这里出了警告,LF和CRLF分别是Linux/Unix 和Windows下的换行符,这里提示将会由CRLF替代,这里我们先不去管这个问题。
使用git status查看,会发现终端下提示变成了绿色,状态显示new file
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.MD
这里我的猜想是git add先把文件添加到暂存区之中了(往后面学习会验证这个我猜想),使用git commit -m “这里写提交说明” 命令,这样就相当于彻底完成了一个新版本提交。
$ git commit -m "new file README.MD"
[master (root-commit) be8afaa] new file README.MD
1 file changed, 1 insertion(+)
create mode 100644 README.MD
这样就提交成功了,再次git status看看
$ git status
On branch master
nothing to commit, working tree clean
证明这次的修改或者添加文件已经彻底提交上去了,工作区很干净。
接下来进行修改和查看此文件的历史版本。
编辑README.MD文件,增加一句话,再次git status会看到已经修改的信息
$ 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: README.MD
no changes added to commit (use "git add" and/or "git commit -a"
此时,如果忘记此前都修改了什么内容,使用git diff可以查看文件被修改的记录,但是如果是add和commit 之后再使用此命令就无法这样查看了。
$ git diff README.MD
warning: LF will be replaced by CRLF in README.MD.
The file will have its original line endings in your working directory.
diff --git a/README.MD b/README.MD
index 918efd9..3d21572 100644
--- a/README.MD
+++ b/README.MD
@@ -1 +1,2 @@
This is my first use.
+This is my second use.
最后git add和git commit提交就完成了。