×

Git的merge合并代码详解_git合并代码

前端技术网 前端技术网 发表于2024-01-04 05:00:23 浏览3530 评论0

抢沙发发表评论

一、Git怎样撤销一次分支的合并Merge

由于太多人问怎么撤销 merge了,于是 git官方出了这份教程,表示在 git现有的思想体系下怎么达到撤销 merge的目标。

方法一,reset到 merge前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD都回滚回去:

Git的merge合并代码详解_git合并代码

$ git checkout【行merge操作时所在的分支】

$ git reset--hard【merge前的版本号】

方法二,当 merge以后还有别的操作和改动时,git正好也有办法能撤销 merge,用 git revert:

$ git revert-m【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】【merge前的版本号】

Finished one revert.

[master 88edd6d] Revert"Merge branch'jk/post-checkout'"

Git的merge合并代码详解_git合并代码

1 files changed, 0 insertions(+), 2 deletions(-)

这样会创建新的 commit来抵消对应的 merge操作,而且以后 git merge【那个编号所代表的分支】会提示:

Already up-to-date.

因为使用方法二会让 git误以为这个分支的东西都是咱们不想要的。

方法三,怎么撤销方法二:

$ git revert【方法二撤销merge时提交的commit的版本号,这里是88edd6d】

Finished one revert.

[master 268e243] Revert"Revert"Merge branch'jk/post-checkout'""

1 files changed, 2 insertions(+), 0 deletions(-)

这样就行了,可以正常 merge了,不过可能会有很多冲突噢!!

$ git merge jk/post-checkout

Auto-merging test.txt

Merge made by recursive.

test.txt| 1+

1 files changed, 1 insertions(+), 0 deletions(-)

最后的最后,还是觉得顶上那些都麻烦爆了。前端天天用 WebStorm写代码的看过来: WebStorm右键点击项目文件或文件夹,有一个:

Local History-> Show History

点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:

Revert

按钮,也就是个紫色的弯曲的小箭头就回去了。在文件量不大的时候十分管用,强烈推荐

二、git merge用法

git merge用法如下:

当前分支合并到另一分支时,如果没有分歧解决,就会直接移动文件指针。这个过程叫做fastforward。

举例来说,开发一直在master分支进行,但忽然有一个新的想法,于是新建了一个develop的分支,并在其上进行一系列提交,完成时,回到 master分支,此时,master分支在创建develop分支之后并未产生任何新的commit。此时的合并就叫fast forward。

1、git merge dev

是将dev的分支合并到当前分支,应该默认是fast forward模式

2、git merge dev--no-ff

--no-ff指的是强行关闭fast-forward方式。

ast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit

3、git merge dev--squash

是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并

三、git合并时多出了很多文件

文件合并时冲突。在Git中进行合并操作时,两个分支在同一时间对同一个文件进行了修改,在合并时就会产生冲突,需要手动解决冲突。这会导致合并后的代码中出现很多新增的文件或修改的文件,这是因为Git会将冲突的文件保存下来,并在文件中标记出冲突的部分,等待开发者手动解决冲突后再进行提交。

四、idea冲突文件没有merge窗口

Idea解决代码冲突

1、首先拉到最新的feature-resolve-conflict代码 2、然后右键项目>【Git】>【Repository】>【Merge changes】 3、选择从远程的master合并过来: 4、罗列出冲突的文件列表,没有冲突的文件会自动Commit 6、点击【Merge】进入「Merge Revisions for xxx」窗口解决对应文件的冲突。点击Merge按钮,然后出现三个代码比对窗口,一个是本地您修改的代码,一个是Romote远程git服务器上的代码,中间的Result是合并之后的结果代码在这个窗口,有两个东西需要注意: A、右上角的「改动点」和「冲突点」,这个数字会随着你的解决冲突改变 B、看见高亮行,我们有5个点需要处理,可以看到5个【x】,或者5个【>>】或【<<】符号。红色行为冲突行;绿色行为增加的代码行;灰色行为删除的代码行;把所有【>>】和【<<】处理完,则会弹出「All changes have been processed」提示: 7、最后提交代码:右键项目>【Git】>【Commit Directory】最后确认无误,push代码吧。注意:在对比的设置模式中,可以选择Show Line Numbers来显示行号,还可以显示或隐藏空格的不同。

关于Git的merge合并代码详解_git合并代码的内容到此结束,希望对大家有所帮助。