git 工作流程
- 克隆或同步远程仓库 使用git clone命令将本仓库完全镜像一份至本地
使用git pull命令将远程仓库代码同步到本地 - 新建或修改代码文件后,将代码提交到暂存区;(git add filename)
- 将暂存区域的文件提交到本地git仓库。(git commit filename -m message) ps:如果发现改错了git add和git commit 命令都是可以撤销的,请大家自行检索相关命令。
- 提交到远程仓库 (git push <远程主机名> <本地分支名>:<远程分支名>)
注意事项:
为了后续能够方便查看修改记录,希望大家在git commit时能够认真对待message部分
-
不要把所有文件修改完后一次性提交,完成了一个阶段性任务就要提交一次
-
message部分要对本次修改了哪些文件,以及修改内容做出简要说明 如
git commit main.cpp -m (main.cpp)新增了输出重定向
分支
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!(from 廖雪峰)
分支分为本地分支和远程分支 再不推送到远程仓库的时候 ,本地分支的创建,删除合并不影响远程分支,因此你可以在本地视情况新增多个分支
同步开发流程
因为master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,dev分支代码稳定后可以合并到主分支master上来
本项目暂时采取分支开发,阶段性合并的流程
以下是阶段一 新功能的开发流程
-
克隆远程仓库 使用git clone命令将本仓库完全镜像一份至本地
-
每个人针对自己的负责部分新建一个分支,并切换到这个分支
git checkout -b branch_name
-
远程新建与其本地同名同名的远程分支
git push --set-upstream origin branch_name
该过程会提示输入密码,输入gitee账户的用户名和密码即可
-
在新建分支下修改和添加文件
-
将新建分支推送到自己新建的远程分支下,因为远程有与本地同名的分支可以输入以下命令(origin 是默认的远程主机名)
git push origin branchName
在确保当前分支与目标分支同名的情况下也可以直接输入git push 但不提倡
合并分支阶段的开发流程
-
每天开始工作前都要先同步远程仓库的master分支到本地的master分支上(使用git pull 命令)
-
切换到你维护的分支下
git checkout branch_name
-
将主分支合并到当前分支
git merge matser
-
解决合并冲突,开始coding、
-
将当前分支提交到自己维护的远程分支下 如需要合并则提醒本项目的管理员,当代码审查通过后由管理员合并到远程主分支下。
小结: 除了管理员任何人都不得修改远程主分支,本地主分支只能推送到远程自己维护的分支下。
解决冲突
多个开发者同时使用或者操作git中的同一个文件,最后在依次提交commit和推送push的时候,第一个操作的是可以正常提交的,而之后的开发者想要执行pull(拉)和pull(推)操作的时候,就会报冲突异常conflict ,合并分支时也会发生冲突。所有冲突原则上都要在本地解决。git 会提示你冲突文件的文件名,这时你就需要查看冲突内容,并修改。
在本项目推荐以下解决方式
- 发生冲突后暂不提交本次冲突文件
- 通过查看Git历史记录,找到冲突内容的维护者,商量修改方案
- 如采用本次最新修改的方案
则先以master分支或远程内容为准,删除新增内容,并将源代码备份一份 使用 git pull命令拉取远程仓库代码到master分支下,使master分支更新到最新内容
使用备份内容重新修改冲突文件,再次提交 - 如以原方案为准不做修改 则直接删除冲突内容即可
(本方案只为暂时方案,如以后发现更好方案会再次修改