如何使用git命令解决代码合并冲突,回退版本

已被阅读 1597 次 | 文章分类:日常随笔 | 2020-05-01 23:53

多人合作团队项目免不了使用像svn、码云、gogs的git版本仓库,但是在代码提交和拉取的过程中,难以避免修改相同文件造成代码冲突,如何高效无误的合并代码变得至关重要;本节主要演示了冲突合并和版本回退中的命令解释

一:如何合并冲突

利用线上操作和本地两个用户演示,下面是原始部分

/net/upload/image/20200502/6372402535440600135415523.png

1、第一种情况,修改同一文件比如增加两个不相关的函数,这里使用码云,这里可以智能提示,那就更方便了

/net/upload/image/20200502/6372402550614366377260959.png

线上修改如下后,直接提交即可

/net/upload/image/20200502/6372402561190748281081156.png

/net/upload/image/20200502/6372402566338773207457620.png

本地更改如下

/net/upload/image/20200502/6372402570106735394242963.png

接下来在本地执行详细的代码提交流程

(1) git add -A:将所有代码改变提交到暂存区

(2) git commit -m '提交本地函数' :将暂存区的内容提交到本地仓库

/net/upload/image/20200502/6372402597984680142208425.png

上面两步可以将代码提交到本地仓库,保存起来,接下来可以拉取代码,拉取代码的命令有两种

git pull :拉取远程代码,并与本地代码自动合并;

git fetch :仅仅将远程代码拉取到本地,不进行合并操作;

git pull 的操作包含了git fetch 和git merge两步;强烈建议使用git fetch 和git merge拉取代码,因为这样可以自己合并代码,自动合并代码仅限于,暴力粗俗导致太容易丢失代码

(3) git fetch:拉取到本地,然后使用git merge 显示有冲突的部分,手动修改

/net/upload/image/20200502/6372402756919128312353589.png

/net/upload/image/20200502/6372402762133085209358353.png

我们可以保留本地的函数,或者只保留远程函数,或者两个都保存

                                            
let message = 'welcome xiaobai1';
console.log(message);
function bendiFn() {
  console.log('bendi');
}
function xianshangFn() {
  console.log('xianshang');
}

                                            
                                        

(4) 因为解决冲突后,相当于修改了文件,所以分别执行git add -A;和git commit重新提交到本地仓库;不用再拉取代码

/net/upload/image/20200502/6372402787621923274955184.png

(5) git push -u origin master:提交到指定分支,可以直接git push提交到默认分支,最终合并完成

/net/upload/image/20200502/6372402800762378513342711.png

2、修改不同文件

远程新增一个remote.js文件,直接提交

/net/upload/image/20200502/6372402831114490807317664.png

/net/upload/image/20200502/6372402837307800392427828.png

本地添加一个文件,bendi.js,执行以下四步,即可完成,并没有任何冲突

/net/upload/image/20200502/6372402842030812806036024.png

/net/upload/image/20200502/6372402849695311116349985.png

最后执行git push即可;所以两个成员在修改不同文件或者模块的话,是没有冲突存在的

/net/upload/image/20200502/6372402860179522954557507.png

二:如何撤销commit

将暂存区代码commit到本地仓库后,发现修改文件错误或者提交信息输入不完善,那可以使用如下命令解决;当然你也可以修改后再次提交,但是这样在就提交两次,推送到远程后不太美观

1、新增一个函数如下:

                                            
function resetFn() {
  console.log('resetFn');
}

                                            
                                        

2、上传到本地仓库

/net/upload/image/20200502/6372403043470766923223115.png

3、此时想放弃刚才的提交信息,重新提交,可以执行如下命令

/net/upload/image/20200502/6372403084323734372647394.png

上面命令会将代码恢复到指定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号