git merge 合并分支

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下:

                        master
                         /
C0 ---- C1 ---- C2 ---- C4
                                                  C3 ---- C5
                                                                  issueFix

当前分支是master
$ git checkout master

把issueFix中的内容Merge进来:
$ git merge issueFix

如果没有冲突的话,merge完成。有冲突的话,git会提示那个文件中有冲突,比如有如下冲突:

<<<<<<< HEAD:test.c

printf (“test1″);

=======

printf (“test2″);

>>>>>>> issueFix:test.c

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 issueFix 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

printf (“test2″);

这个解决方案各采纳了两个分支中的一部分内容,而且删除了 <<<<<<<,=======,和>>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决(resolved)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:

$ git mergetool
merge tool candidates: kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff
Merging the files: index.html

Normal merge conflict for ‘test.c’:
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):

合并后的分支图如下:

                               master
                                 /
C0 ---- C1 ---- C2 ---- C4 ---- C6
                        \       /
                        C3 ----C5
                                                              issueFix

注意,这次合并的实现,由于当前 master 分支所指向的 commit (C4)并非想要并入分支(issueFix)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和 C5)和它们的共同祖先(C2)进行一次简单的三方合并。对三方合并的结果作一新的快照,并自动创建一个指向它的 commit(C6)

退出合并工具以后,Git 会询问你合并是否成功。如果回答是,它会为你把相关文件暂存起来,以表明状态为已解决。然后可以用 git commit 来完成这次合并提交。

时间: 2024-10-11 09:02:27

git merge 合并分支的相关文章

git merge合并时遇上refusing to merge unrelated histories的解决方案

如果git merge合并的时候出现refusing to merge unrelated histories的错误,原因是两个仓库不同而导致的,需要在后面加上--allow-unrelated-histories进行允许合并,即可解决问题 如果还不能解决问题,就把本地的remote删除,重新git remote add添加远程仓库,再按上面的方法来,问题解决. git checkout master #切换到要提交代码的分支 git pull origin master --allow-unr

Git master合并分支时提示“Already up-to-date”

Git master合并分支时提示"Already up-to-date" ? 在使用Git把当前分支合并到master提示"Already up-to-date",但当前分支和 master 分支代码不同步. ? 假设当前分支是:dev,主分支是:master. 解决方法: git checkout master: git reset --hard dev; git push --force origin master ? 如果不考虑配置文件等测试,生产不同的文件

git merge / rebase 分支的新建与合并

merge https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6 关键指令 git checkout -b xxx       新建分支 git branch -d xxx       删除分支 git merge  xxx          合并分支 git checkout xxx 切换分支 关

【Git版本控制】Git中merge合并分支只对当前分支产生影响,被合并的分支不受影响

git checkout master git merge dev dev分支上commit的内容会合并到master分支,但dev不受影响. 正确的基于分支开发流程: 1.拉取远程master分支的最新版本到本地:git pull orgin master 2.由master分支复制一新的分支,并切换到新分支上做开发:git checkout -b dev 3.当dev分支上有提交时,切换到master分支然后将dev分支与当前分支合并(合并后master分支的内容会变,dev分支不变): g

Git如何合并分支代码

如果是在IDEA中使用Git,可以直接合并代码. 我当前的开发分支,是feature/bing,现在我需要合并分支 feature/xxs 上的代码,这个过程只需要在IDEA中完成. 1.在IDEA中右下角选中需要的分支,选择Merge合并 2.如果两个分支上有代码冲突,则需要手动合并冲突,然后点击确认3.再次Push的时候,就有另外一个分支上的代码了.除了另外分支上的变更集外,还会自动生成一个Merge分支,用来存放合并后有冲突的变更代码. 我这里的两个分支没有冲突代码,所以自动生成的这个Me

在vsCode中用git命令合并分支

提交修改代码到本地仓库 $ git commit -m "修改的东西的描述"切换到master主分支上 $ git checkout master拉取主分支上面的代码 $ git pull origin master切换到自己的分支 $ git checkout lbh将master主分支上的代码合并到当前分支 $ git merge master点在下图中红圈圈住的东东,查看冲突代码 将本地的 lbh 分支推送至远端的 lbh分支,如果没有就新建一个 $ git push origi

git第七节---git merge和git rebase

# git merge和git rebase 都可以进行分支合并 #git merge 合并后保留记录两个分支的记录 #git rebase合并后会展示成一个分支的记录,另一个分支的提交实际生成了一个副本 冲突解决 git merge在解决冲突后需要手动通过git add ,git commit 再生成一次提交 git rebase 在解决冲突后会自动生成一次提交 git merge 一次性会解决之前提交记录中的所有冲突 git rebase 一次只会解决一次提交上的冲突,如果多次提交都有冲突,

01新建用户分支-合并分支

git add .git commit -m "" 一定要有空格哈 git branch 查看分支状态git checkout master 切换到主分支 git merge dev-login(分支名) 合并分支git push 创建另外一个分支git checkout -b dev-users 原文地址:https://www.cnblogs.com/IwishIcould/p/11846201.html

GIT 分支管理:创建与合并分支、解决合并冲突

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN! 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你