git入门(二):git基本命令讲解(本地库↔远程库)
前言
看git入门,请想象自己就是开发人员,正在操作一个项目的本地与远程的文件版本更新控制。
一、Git原理(why use git)
1、版本控制
(1)定义:
是一种记录一个或者若干个文件内容变化,以便将来查阅特定版本修订情况的系统(理论不好理解)
(2)用处:
情况一:项目文件中有很多文件,经过许多天后修改若干个文件,想找到之前某一天所修改的错误记录,却无从查起,这个时候便需要一个有提交文件记录(包括提交时间、提交修改内容等)的文件修改的版本控制工具来帮助你
情况二:多人协作共同管理一个拥有多个代码文件的项目,你需要有一个提交修改记录的版本控制工具去告知你的伙伴,该文件在何时何地修改了什么内容,以便伙伴了解,便于团队之间协作
2、种类
(1)本地版本控系统
(2)集中式版本控制系统(SVN)
即拥有共有的服务器,作为中心节点,pull、commit、push都集中在这台服务器上进行操作,受限于服务器不灵活性和网络问题
(3)分布式版本控制系统(Git)
哎这个不说了,累,具体操作和体验可以看之前写的《git的初尝试》:
浅谈git入门(一):git初尝试
3、Git优势
诞生于2005年,来源自linux开源社区
- 速度很快
- 分布式(不怕断网哈哈~)
- 简单的设计
- 允许上千个并行分支同时开发
二、Git的几个重要概念
1、记得之前在《git初尝试》中尝试对项目进行本地和远程库之间文件版本的操作控制。
如下图标注,终端操作,push到远程库的全过程:
image
2、仓库中的三种必备状态(重要概念):
image(1)已暂存(staged),将已修改的文件放在下次提交(提交至本地仓库)时要保存的清单中,即暂存区里)。
(2)(添加了文件之后,)已修改(modified)某个文件,但还没有提交保存
(3)已提交(committed)该文件,已经被安全地保存在本地数据库中了
三、简单演示
1、起步
初次使用,需要设置姓名和邮箱
$ git config --global user.name "你的名字"
$ git config --global user.email johndoe@example.com
2、clone一个项目
用于把一个已有的github项目clone(下载)到本地变为本地仓库
$ git clone git@github.com:jirengu/blog.git
$ cd blog
3、添加文件并提交【本地库↔远程库】
(1)创建文件
$ touch a.md
(或者直接打开本地仓库目录新建文件)
由于刚才的文件是空文件,通过一个命令在文件中写入一个字符串:
$ echo "hello" > a.md
(2)查看仓库状态
$ git status
此时,学会看命令行提示(英语单词了解一下吧orz( ̄▽ ̄)")
如提示:untracked files(未跟踪)、nothing added to commit(还没添加文件在暂存区去等待本地提交),并提示怎么做:(use "git add" to track)。如图:
image
(3)把当前文件夹下的新增和删除全部放在暂存区
$ git add .
再次查看:
$ git status
如查看提示:use "git reset HEAD <file>..." to unstage,即可以将文件从暂存区拿出来。
(4)把暂存区的更新提交到本地库
$ git commit -am "add file"
关于-am "add file"中的-am可以看一下份资料:
git commit -m 与 git commit -am 的区别git commit -m 与 git commit -am 的区别
而-am "add file"即说明文件以什么修改状态(如修改?添加资料?)即被跟踪暂存等待本地提交。
再次查看
$ git status
提示push
推送本地仓库
$ git push origin master
image
4、修改、删除文件【远程库↔本地库】
(1)把远程库拉下合并(merge)到本地仓库
$ git pull
(2)
修改文件
$ vim a.md
或
删除文件
$ rm -rf a.md
$ git add .
(3)#添加文件至暂存区
$ git add .
(4)#提交至本地库
$ git commit -am "字符串"
注:这里需要注意的是如果提交消息包含大量字符串,提交参数不用加m
(5)#推送远程库
$ git push origin master
5、多人协作
(1)有一人在远程修改文件,你不知道仍继续在终端修改提交文件
$ touch b.md
$ git add .
$ git commit -am "add b"
$ git push
终端修改,出现拒绝的报错,如:
图片
(3)这个报错说明终端push远程文件失败。即在远程库的一些已修改的文件没有更新到本地,本地文件夹里没有相应的更新,你需要在本地终端同步更新远程库所更新过的文件。
(4)被多人协作过的远程库拉下本地更新一下,即执行:
$ git pull
自动将更新后的远程库拉回来,并merge(合并)你所更新的文件,进入一个vim编辑器,编辑需要更新的文件
$ vim b.md
你要怎么样都可以,不想干嘛就保存退出,不再说vim的使用方法了。赶紧看下一步:
$ git add .
$ git commit -am "merge"
$ git push
结论:
每一次在本地库完成自己的文件更新,都需要git pull一下,让远程库在本地与你的文件合并(merge),在推送(push)