3 git 代码管理
| 名称 | 相关知识点 |
|---|---|
| 3.1 常用命令 | commit、merge、rebase、push |
| 3.2 分支管理 | gitflow流程简介 |
3.1常用命令
git init # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx" # 配置用户名
git config --global user.email "xxx@xxx.com" # 配置邮件
git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git commit -m 'xxx' # 提交
git rm -r * # 递归删除
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git show commitId # 显示某个提交的详细内容
git tag # 显示已存在的tag
git diff HEAD^ # 比较与上一个版本的差异
git branch # 显示本地分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout v2.0 # 检出版本v2.0
git merge origin/master # 合并远程master分支至当前分支
git push origin master # 将当前分支push到远程master分支
git push --tags # 把所有tag推送到远程仓库
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git ls-files # 列出git index包含的文件
git show-branch # 图示当前分支历史
git show-branch --all # 图示所有分支历史
3.1 gitflow流程简介
Git Flow 的常用分支
-
生产分支(master) Master分支是仓库的主分支,这个分支包含最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改
-
补丁分支(hotfix) 当我们在生产环境发现新的Bug时候,我们需要基于master分支创建一个Hotfix分支,然后在Hotfix分支上修复bug,完成Hotfix后,我们要把hotfix分支合并回Master和Develop分支
-
发布分支(release) 当你需要发布一个新功能的时候,要基于Develop分支创建一个Release分支,在Release分支测试并修复bug,完成release后,把release合并到master和develop分支
-
开发分支(develop) 这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
-
功能分支(feature) feature分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
git flow的具体使用
当我们新建git仓库之后,默认会创建一个主分支也就是master分支,由于master分支是用于发布生产环境,所有必须保证master上代码的稳定性,所以我们不能直接在master分支上修改提交。我们要基于master分支创建一个develop分支,develop分支用于保存开发好的相对稳定的功能,master分支和develop分支是仓库的常驻分支,一直会保留在仓库中
当新的开发任务来了之后,就要编写代码了,我们尽量不要在develop分支上写代码,要保证develop分支的相对稳定,所以这时我要就要基于develop 分支创建一个临时的开发分支,然后在开发分支上编写代码,等功能开发完之后我们再把开发分支合并到develop上
新功能合并到develop分支之后,我们想把新功能发布到生产环境,首先基于develop分支创建release分支,然后在release分支测试完成之后,把release分别合并到master分支和develop分支
release分支合并到master分支之后,在master分支上打标签用于发布:
我们把代码发布到了生产环境,用户在使用的时候给我们反馈了一个bug,这时我们需要基于master分支创建一个hotfix 分支,用于修复bug,bug修好之后,把hotfix 分支分别合并到master分支和develop分支
①将本地代码上传到远程仓库
1.登录coding,新建一个仓库,点击代码浏览可以看到
2.在本地新建一个文件夹,作为项目根目录,再此启动 Git Bash ,进入目录,并输入
git init //初始化一个本地git仓库
3.将本地仓库和我们在coding上创建的远程仓库对接起来,输入
git remote add *yourname* *git_url*
add 后面输入你的仓库名字,自定义。git_url代表你的git地址,这里我命名为origin
git remote add origin *url*
回车成功后可以输入
git remote -v
4.为了我们的代码是最新的状态 和 提交时不会产生冲突,我们先执行下pull操作,将远程仓库最新代码拉到我们本地来,输入
git pull origin master
(origin就是我们上面设置的仓库名,master代表主分支,你可以把分支理解为一块区域,我们最终编写完成的代码都要整合到master分支里面去。然后,我们还可创建一些其他分支,去保存我们正在编写中,或者尚未测试的代码。)
5.接下来我们来模拟写代码并上传到远程仓库去。 我们新建一个 a.js文件,并编辑一些内容进去。首先将a文件添加到暂存区
git add a.js
(add后面可以带多个文件名字,用空格隔开;或者输入 . 代表全部)
然后再提交到本地仓库中去
git commit -m "first commit"
-m 后面接的是备注内容,这里我备注为“第一次提交”,回车后成功会看到提示消息
6.然后我们需要把它push到远程仓库中去。输入
git push origin master
②分支的使用
mster代表主分支,最终的代码都整合到这里面去
1.首先查看当前分支
git branch -a
-a代表查看本地和远程的分支,此时我们看到都只有一个master分支
2.新建分支dev
git checkout -b dev
-b代表同时切换到dev分支下面去,这时你可以再去查看分支
3.然后我们重新写一个b.js文件,再执行add,commit,最后push
git add b.js
git commit -m "dev"
git push origin dev
注意push时要到dev分支 成功后我们去coding看已经有了dev,并且dev下有b.js,而master没有b.js
master:
我们可以再去看看分支情况,
git branch -a
此时已经有了两个分支,且当前位于dev分之下 切换分支可以用 git checkout [branch-name]
③整合分支
1.切换本地分支到master
git checkout master
2.将远程仓库的最新代码pull下来!!因为期间其他人可能已经提交代码到远程master了,所以你首先得更新下自己本地的master代码
git pull origin master
3.然后再把本地的dev代码整合到master,输入
git merge dev
merge整合操作,把dev整合到当前分之下(当前分支为master)。会提示增加了东西
4.由于当前的东西已经在本地仓库里面了,所以最后我们再执行push,到远程仓库的master
git push origin master
成功后你可看到,master下已经有b.js文件了