前言
本篇是Git基础知识(一)的延续,由于篇幅原因,分成两篇。
我们重新建立一个文件夹,执行git init。
添加一个有三行aaaaa
内容的git.txt
文件,并commit。
分支
截止目前,我们都是在一个叫做master
的分支上工作。Git允许我们创建分支去做一些其他的事儿,而不影响到你的master分支。
1. branch
branch命令可以查看分支、创建分支以及删除分支。
a. 查看分支
git branch
可以看到我们当前只有一个分支master,也叫主分支,*号代表当前所在的分支,这里就是matser分支。
b. 创建新的分支
git branch branch_1
git branch // 查看分支
可以看到现在除了master分支,还多了一个branch_1分支,并且这个分支完全继承了master,相当于一个copy。当前所在分支还是master。
c. 切换到branch_1
git checkout branch_1 // 使用checkout命令
git branch // 查看分支
当前所在分支已经切换到branch_1,接下来我们就可以在这个分支做一些开发工作了。
2. merge
Fast-forward合并
a. 我们在branch_1分支修改git.txt,添加一行bbbbb
添加并commit
git add git.txt
git commit -m "add bbbbb"
b. 返回master分支,合并branch_1
git checkout master
git merge branch_1 // 合并分支
此时,master分支就成功合并了branch_1分支,查看一下log,分支的commit也同样被合并进了master。
c. 这个分支的使命已经完成,删除分支
git branch -d branch_1
这种合并是无冲突的合并,称为Fast-forward。然而事情并没总那么好,下一个小节就来看下发生冲突的情况。
Conflict合并
a. 新建一个分支branch_1,切换到该分支,编辑git.txt
b. add、commit
c. 返回主分支
d. 很不幸,主分支也编辑了同一个地方。
e. add、commit
f. 尝试合并branch_1
git merge branch_1
提示有Conflict。
g. 此时文件变成酱紫了:
h. 手工修复,选择保留的内容,假设我要保留主分支编辑的内容,就删除掉其他分支编辑的内容,必须把<<<< ==== >>>>这几行也删掉,再提交就可以了。
小结
- 认识分支模型
- 几个基本命令
团队协作
目前为止,我们是个人使用git进行版本控制,然而git更牛逼的地方在于团队协作。
clone
clone命令可以克隆别人的仓库到自己的电脑本地,克隆地址可以是Url地址,也可以是本地的地址。
git clone remote_location clone_name`
我们将上诉进行版本控制的工程,即桌面上的新建文件夹
,克隆一份同样到桌面,名称为clonedPrj
。被克隆的仓库成为远程仓库,有一个专属名称为:origin
这样我们的桌面上便会出现一个和远程仓库一模一样的clonedPrj
文件夹
fetch
fetch命令可以将远程的仓库拉取到一个叫做origin/master
的分支,这个分支是无法通过git branch
命令看到的,然而却是存在的。然后你可以将这个分支合并到你的主分支,这样就与远程仓库保持一致了。
a. 在原本的工程添加一个git1.txt,add,commit。
b. 在克隆的工程敲如下命令:
git fetch
c. 合并origin/master分支
git merge origin/master
这样便能与远程仓库保持一致了
push
既然你已经通过clone或者fetch和merge,使你的仓库与远程仓库一致,那就意味着你准备好协作开发了。
a. 首先新建一个branch_1分支,切换到该分支。
b. 编辑git1.txt文件
c. add commit
d. 将你的分支push给远程仓库git push origin your_branch_name
git push origin branch_1
这样就将当前分支push给了远程仓库,它那边会出现一个被push的分支,至于合不合并,那就是远程仓库的事了。
协作一般流程
- 第一次克隆或者进行fetch、merge操作,保持与远程同步
- 必须创建一个新的分支
- 开发
- fetch、merge操作,再次与远程同步
- 将分支push给远程
小结
- 认识远程仓库
- 几个基本命令