[toc]
chapter(一)
1.1 题记
Git又名分布式版本控制系统,是大神Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeepe. Torvalds 只花了两周时间,自己用C写了一个分布式版本控制系统,大喊:厉害啊! 重点 :Git是开源而且免费的,且为最流行的分布式管理软件。
1.2 Git能干什么?
简单来讲,当你写代码时,因为会有很多版本,你不可能也不会把每个版本都特殊存起来。 这些繁琐的事情很烦,但有时候却有很有用,而Git就是帮你干这些繁琐事情的。
1.3 分布式管理VS集中式管理
- 集中式必须有一个中央服务器,每个程序员,先从这里取得最新的版本,写完在推给中央服务器。 通过上面说的,集中式管理必须要有网,没网,白瞎。
- 而分布式管理不同,它没有中央服务器,但不代表它不需要中央服务器,每个人本地都是完整的版本库。
1.4 安装Git
Linux上,若使用Debian或Ubuntu,直接使用如下代码:
sudo apt-get install git
windows系统,直接去官网下载程序
本系列都是在Linux进行操作滴。其他系统的操作方法是类似滴。
1.5 小试牛刀-创建仓库(repository)
- 首先,我先建立一个名为testGit的目录。
- 创建目录命令:
mkdir testGit
cd testGit
-
结果如下:
mkdir testGit root@ubuntu-xenial:/myCode/Git/testGit# pwd /myCode/Git/testGit
- 创建目录命令:
-
其次,将这个目录变为仓库(repository),命令:
git init
root@ubuntu-xenial:/myCode/Git/testGit# git init Initialized empty Git repository in /myCode/Git/testGit/.git/ root@ubuntu-xenial:/myCode/Git/testGit# ls root@ubuntu-xenial:/myCode/Git/testGit# ls -ah . .. .git root@ubuntu-xenial:/myCode/Git/testGit#
通过上面的代码可以看到,git init
后,立马显示创建了一个空Git仓库:
Initialized empty Git repository in /myCode/Git/testGit/.git/
ls
下,发现没有反应。
ls -ah
下,发现出现了一个. .. .git
这是因为创建的.git
目录是隐藏的,ls -ah
可以显示隐藏的目录
1.6 小试牛刀-进行文件添加和提交
创建了仓库,我们就开始正式进入实战:
- 首先 创建一个文档吧,我随便写了一个简单的C++程序
vim helloword.cpp
写入如下代码:1 #include<iostream> 2 3 int main() 4 { 5 std::cout << "This is a program that test Git!" << std::endl; 6 return 0; 7 }
保存,ls下:
root@ubuntu-xenial:/myCode/Git/testGit# vim helloword.cpp root@ubuntu-xenial:/myCode/Git/testGit# ls helloword.cpp root@ubuntu-xenial:/myCode/Git/testGit#
-
重点来啦:用命令
git add
给Git说,我要把文件添加到仓库中~git add helloword.cpp
提交完,如下,发现什么反应都没有,嗯哼,要知道,有时候,没消息,就是最好的消息。root@ubuntu-xenial:/myCode/Git/testGit# git add helloword.cpp root@ubuntu-xenial:/myCode/Git/testGit#
此时,Git已经通过命令
git add
,把文件添加仓库中了。 -
git add
只是文件添加仓库中,就好比你去图书馆还书,你仅仅是把递给了图书管理员。-这步就好比添加到仓库 然后,管理员要根据图书分类,把它重新放到对应的书架中,方便其他同学借阅。这步是什么呢? 是的:在Git中这步叫提交,命令git commit
往往在git commit
后面加入一个参数-m "提交说明"
,强烈建议你输入有意义的话!root@ubuntu-xenial:/myCode/Git/testGit# git commit -m "test Git program" *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'root@ubuntu-xenial.(none)') root@ubuntu-xenial:/myCode/Git/testGit# ^C root@ubuntu-xenial:/myCode/Git/testGit#
没有成功啊!看看提示发现,要让我添加邮件,命令都告诉我了。
git config --global user.email "you@example.com" git config --global user.name "Your Name"
添加邮箱后,再试一次:
root@ubuntu-xenial:/myCode/Git/testGit# git commit -m "test Git program" [master (root-commit) d6e5713] test Git program 1 file changed, 7 insertions(+) create mode 100644 helloword.cpp root@ubuntu-xenial:/myCode/Git/testGit#
上面这段的意思是:1 file changed, 1个文件被改动;7 insertions(+),插入了7行内容。
-
【注】向Git提交文件需要两步,
commit
一次可以提交很多文件,而add
是可以添加很多文件或反复添加很多文件: 如:git add helloword.cpp helloword2.cpp helloword3.cpp git commit -m "add three files"
1.7 总结:
git init
-初始化Git仓库
git add <file>
-添加文件到仓库
git commit -m "说明"
-提交文件到仓库