前言
git和github:git是目前世界上最先进的分布式版本控制系统(对比集中式版本控制系统SVN)。github是一个免费的代码远程托管仓库。
几个概念:
(1)工作区:当前存放项目代码的目录;
(2)暂存区:git add把工作区修改的内容添加到暂存区当中;
(3)本地仓库:git commit把本地暂存区的修改提交到本地代码仓库分支中(不同分支代表不同的代码版本);
(4)远程仓库:通过git push把本地仓库的某一个分支上的代码推送到远程仓库的某个分支上;
(5)HEAD指针:本地仓库每一个分支上的代码修改都会生成一个commit id信息,HEAD指针指向最近一次的commit提交,通过这个commit id可以进行版本回退。
git基本操作
1.git add
git add命令可以把本地修改的代码或者文件,添加到本地暂存区
2.git commit
通过git commit提交命令,把修改的代码文件,从暂存区提交到本地的master分支上去(实际上当我们第一次用git clone拉取远程master分支的代码时,本地也创建了一个master分支,保存用户修改后需要提交的代码,分布式嘛,每个机器上都可以维护一个代码仓库!)
git commit -m "xxx" //把暂存区的代码提交到本地分支
3.git push
通过git push命令,把本地master分支上的所有代码,都推送到远程master分支上去了(俗称“合代码”),通过git log,可以查看修改日志。
//本地分支推送到远程分支:
git push <远程仓库名> <本地分支名>:<远程分支名>
4.git fetch和git pull
通过git pull命令拉取github仓库上项目的最新代码,然后基于最新的代码进行修改(注意:当修改代码前,执行一下git pull命令是一个好习惯!),事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。
//即:
git pull = git fetch + git merge
注:git fetch不会进行合并,执行后需要手动执行git merge合并,而git pull拉取远程分之后直接与本地分支进行合并。更准确地说,git pull是使用给定的参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。
----》相比起来,git fetch更安全也更符合实际要求,因为可以在merge前,我们可以查看更新情况,根据实际情况再决定是否合并。
-----》参考于思否
git分支操作
1.git branch
查看本地分支:git branch
查看远程分支:git branch -r
创建分支(本地): git branch name
删除本地分支: git branch -d name
例如:git branch -d sortdev可以删除该分支;
查看本地分支和远程分支的追踪关系:git branch -vv
2.git checkout
切换分支: git checkout name
创建+切换分支: git checkout -b name
例如:git checkout -b sortdev就是创建一个新的本地分支sortdev并切换到该分支;
3.git merge
git merge name 合并某分支到当前分支
git子项目操作
git submodule
(1)什么是Submodule?
git Submodule 是一个很好的多项目使用共同类库的工具,他允许类库项目做为一个单独的git项目存在父项目中,子项目可以有自己的独立的commit,push,pull。而父项目以Submodule的形式包含子项目,父项目可以指定子项目header,父项目中会的提交信息包含Submodule的信息,在clone父项目的时候可以把Submodule初始化。
(2)在项目中使用Submodule
使用git命令可以直接添加Submodule:
git submodule add git@github.com:jjz/pod-library.git pod-library