简明的 git 代码提交流程
原则:不能在 master分支上修改任何文件。master分支上的变更只能通过git pull和git merge获得。在master分支下,不能手动修改任何文件。
本地dev分支开发(首先,创建dev分支,然后切换到dev分支上进行开发)
git checkout -b dev:创建并转到dev分支git branch:查看当前分支,当前在dev分支
我们自己有一个分支用来修改自己的代码,例如我的分支是dev分支。我把代码修改完成了,现在不知道有没有冲突
git status: 查看dev分支工作区代码跟dev分支暂存区的差别git add .: 将dev分支工作区修改过的所有代码添加到暂存区,.表示当前目录git commit -m "注释": 将暂存区的代码添加到本地仓库dev分支git merge master:dev分支的工作区同步到本地master分支
这时,dev工作区的文件会回到master分支的状态,但是不用担心,因为我们最新的修改已经保存到dev本地仓库了。这样做保证了master和dev分支是没有冲突的。有冲突的话,就在dev分支解决。如果没有任何报错,那么直接转到合并分支与提交
- 如果有冲突,根据提示,把冲突解决,保存文件。然后执行上面第4和第5步
合并分支与提交到线上(master分支上的变更只能通过git pull和git merge获得)
git checkout master: 切换到master分支git pull:同步线上master仓库,确保当前master分支是最新代码git merge dev: 合并dev分支到master(需当前在master分支)git push:推送到线上master分支(需当前在master分支)git branch -d dev:开发完成,删除本地dev分支;git push origin:dev:删除远程的dev分支(可选)
总结
- 拉取代码到本地
git clone http:/xxxxxx.git
- 在本地建立一个新个人分支qxy,并保证远程仓库也有这个分支
git checkout -b qxy
git push origin qxy:qxy
// qxy是新建的本地分支名,origin/qxy是同名的远程分支名
git branch -a
// 查看一下,发现自己已经处于本地分支qxy下,且远程也存在这个分支。此时就可以在这个分支上进行自己的开发了
- 经过一系列开发后,你在本地分支qxy有了一些改动,此时可以将这些改动push到自己的远程分支qxy
git push origin qxy
- 如果你已经确定改动无误,且打算合并到主分支master,可以进行以下操作:在本地切换到master分支
git checkout master
- 确保在多人协作下不会错过别人推送到master分支上的改动,要先pull一下master分支
git pull origin master
- 将自己的分支qxy与master分支合并
git merge qxy
git status
// 可以通过上面指令查看得知你当前合并到master分支的qxy分支有多少次commit要被推送到master上
- 将这些commit推送到master分支
git push origin master
// 从而完成个人分支qxy与master分支上的合并
-
此时,虽然你完成个人分支qxy与master分支上的合并,但你可能继续在qxy分支上开发,而此时项目的其他开发人员可能有些更新也同样merge到了master上,如何确保你的qxy分支和master分支上完全一致呢?
- 切换到master分支上,然后拉取master分支上的最新代码。上述步骤4、5
- 切换回自己的qxy分支,并将qxy分支和刚刚拉取过来的master合并
git checkout master
git pull
git checkout qxy
git merge master
面试题:git如何管理一个项目
- git init 初始化git仓库(新项目才有这一步)
- git clone 将远程仓库的项目下载下来
- git checkout -b dev(dev 为本地分支名称)
- git add . 将工作区文件存在暂存区
- git commit -m "" 从暂存区存到存储区
- git checkout master 切到master分支
- git merge dev 合并分支,合并分支后将分支删除
- 使用git push 将其上传到远程仓库
- 第二天上班,先 git pull 一下,更新最新代码