1、什么是版本库?


  版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

$ mkdir learngit
$ cd learngit
$ pwd
/home/sukii/learngit

  pwd命令用于显示当前目录。在环境中这个仓库位于/home/sukii/learngit。

  通过git init命令把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in /home/hubwiz/learngit/.git/

  瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

  如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用 ls -ah 命令就可以看见。

 

2、添加文件


  我们了解下版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

为了简明起见,我们创建一个readme.txt作为练习:

echo "Git is a version control system." > readme.txt
// 输入这句话保存到创建的readme.txt文件中
echo " Git is free software." >> readme.txt
// 输入此内容追加到readme.txt中

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

用命令git add告诉Git,把文件添加到仓库:

$ git add readme.txt

git add 实际上是个脚本命令,没有任何显示,说明添加成功。

3、提交文件


用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

  git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

  为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

  

最新文章

  1. 介绍开源的.net通信框架NetworkComms框架之四 消息边界
  2. awesome-nlp
  3. Scrum Planning Card
  4. 济南学习 Day 1 T2 am
  5. CSS content内容生成技术以及应用(转)
  6. delphi调用java编写的webservice
  7. rsync相关整理
  8. VS2010安装与测试编译问题(fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt)
  9. [Leetcode][Python]32: Longest Valid Parentheses
  10. poj1328贪心中的区间问题
  11. Elastic Search 语法总结
  12. 开启Golang编程第一章
  13. Red5视频流服务器安装
  14. BZOJ3732Network——kruskal重构树+倍增+LCA/最小生成树+倍增
  15. 解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录
  16. 【Linux】关于减号 - 的用途
  17. 2018.09.16 bzoj3626: [LNOI2014]LCA(树链剖分)
  18. Review——JS的异步与同步
  19. 浅谈jodaTime 的使用
  20. Django实战(11):修改Model类

热门文章

  1. 关于CodeFirst异常:无法确定类型'XXX'和类型‘YYY’之间的关联的主体端,必须使用关系 Fluent API 或数据注释显式配置此关联的主体端。
  2. Ext.NET 4.1 系统框架的搭建(后台) 附源码
  3. csharp: DBNull and DateTime
  4. Asp.Net WebService 使用后来管理系统对接口方法进行公开控制
  5. Android使用SQLite数据库(3)
  6. Android自定义surfaceView显示多张图片
  7. hhvm的正确安装姿势 http://dl.hhvm.com 镜像
  8. 最新微信公众平台js sdk整合PHP版
  9. IOS----友盟推送详解
  10. 泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow