已被阅读 2137 次 | 文章分类:日常随笔 | 2020-05-01 23:53
多人合作团队项目免不了使用像svn、码云、gogs的git版本仓库,但是在代码提交和拉取的过程中,难以避免修改相同文件造成代码冲突,如何高效无误的合并代码变得至关重要;本节主要演示了冲突合并和版本回退中的命令解释
一:如何合并冲突
利用线上操作和本地两个用户演示,下面是原始部分
1、第一种情况,修改同一文件比如增加两个不相关的函数,这里使用码云,这里可以智能提示,那就更方便了
线上修改如下后,直接提交即可
本地更改如下
接下来在本地执行详细的代码提交流程
(1) git add -A:将所有代码改变提交到暂存区
(2) git commit -m '提交本地函数' :将暂存区的内容提交到本地仓库
上面两步可以将代码提交到本地仓库,保存起来,接下来可以拉取代码,拉取代码的命令有两种
git pull :拉取远程代码,并与本地代码自动合并;
git fetch :仅仅将远程代码拉取到本地,不进行合并操作;
git pull 的操作包含了git fetch 和git merge两步;强烈建议使用git fetch 和git merge拉取代码,因为这样可以自己合并代码,自动合并代码仅限于,暴力粗俗导致太容易丢失代码
(3) git fetch:拉取到本地,然后使用git merge 显示有冲突的部分,手动修改
我们可以保留本地的函数,或者只保留远程函数,或者两个都保存
let message = 'welcome xiaobai1';
console.log(message);
function bendiFn() {
console.log('bendi');
}
function xianshangFn() {
console.log('xianshang');
}
(4) 因为解决冲突后,相当于修改了文件,所以分别执行git add -A;和git commit重新提交到本地仓库;不用再拉取代码
(5) git push -u origin master:提交到指定分支,可以直接git push提交到默认分支,最终合并完成
2、修改不同文件
远程新增一个remote.js文件,直接提交
本地添加一个文件,bendi.js,执行以下四步,即可完成,并没有任何冲突
最后执行git push即可;所以两个成员在修改不同文件或者模块的话,是没有冲突存在的
二:如何撤销commit
将暂存区代码commit到本地仓库后,发现修改文件错误或者提交信息输入不完善,那可以使用如下命令解决;当然你也可以修改后再次提交,但是这样在就提交两次,推送到远程后不太美观
1、新增一个函数如下:
function resetFn() {
console.log('resetFn');
}
2、上传到本地仓库
3、此时想放弃刚才的提交信息,重新提交,可以执行如下命令
上面命令会将代码恢复到指定commitId的版本,然后保留暂存区的内容,如果没有对代码修改,则直接commit提交即可;如果对代码进行了修改,再次add 然后commit即可
这里区别以下两种命令:
git reset --hard < commitID > 将代码恢复到当前commitID的head版本,不保留本地工作区新增的内容
git reset --soft <commitID> 将代码恢复到当前commitID的head版本,保留暂存区的内容
--hard 直接将本地代码恢复到指定的commitId版本,不保留本地的代码,意味着本地代码不会被保留;
如果想恢复之前提交的版本怎么办呢;需要使用 git reflog 查看所有提交记录,然后继续使用git reset --soft即可,恢复到之前版本
QQ:3410192267 | 技术支持 微信:popstarqqsmall
Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号