Git 是什么
Git是目前世界上最先进的分布式版本控制系统(没有之一)
Git 与 SVN 最大的区别是: SVN是集中式的版本控制系统,而Git是分布式版本控制系统。
集中式版本库是集中存放在中央服务器的,最大的毛病就是必须联网才能工作。
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
Github就是基于Git进行代码托管服务的,不会Git,就不能真正发挥Github强大的作用,无Git不Github。
快速开始
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 检出仓库
$ git clone https://github.com/alovn/alovn.github.io.git
# 如果是开始一个新项目, 创建新仓库
$ git init
# 查看你的 git 仓库状态。
$ git status
# 将指定文件放入暂存区
$ git add <file>
# 将指定目录下所有变化的文件,放入暂存区
$ git add <directory>
# 将当前目录下所有变化的文件,放入暂存区
$ git add .
通过git add这个命令,工作区里面那些新建或修改过的文件,会加入.git/objects/目录,文件名是文件内容的 SHA1 哈希值。git add命令同时还将这些文件的文件名和对应的哈希值,写入.git/index文件,每一行对应一个文件。
当你对缓存的快照满意之后,可以通过 git commit 将它提交到你的项目历史中去。
1
2
# 提交
$ git commit -m "代码提交信息"
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。
现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。 在开发时,良好的习惯是根据工作进度及时 commit,并务必注意附上有意义的 commit message。创建完项目目录后,第一次提交的 commit message 一般为「Initial commit.」
推送改动
你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
1
git push origin master
可以把 master 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
1
git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。
创建分支
1
git branch dev
切换分支
1
git checkout dev
创建并切换分支
1
git checkout -b dev
将远程git仓库里的指定分支拉取到本地
当本地不存在分支时
1
git checkout -b dev origin/dev
修改git 远程地址
1
2
3
4
git remote rm origin
git remote add origin ssh://[email protected]/xxx
或者
git remote set-url origin ssh://[email protected]/xxx
文档
更多的文档可以直接查看 Git 文档