合并多次提交 commits 到 新分支

  • 合并某个分支上的单个commit

首先,用Git log或GitX工具查看一下你想选择哪些commits进行合并,例如:

dd2e86 - 946992 -9143a9 - a6fd86 - 5a6057 [master]

\

76cada - 62ecb3 - b886a0 [feature]

比如,feature 分支上的commit 62ecb3 非常重要,它含有一个bug的修改,或其他人想访问的内容。无论什么原因,你现在只需要将62ecb3 合并到master,而不合并feature上的其他commits,所以我们用git cherry-pick命令来做:

[plain] view plain copy

  1. git checkout master
  2. git cherry-pick 62ecb3

这样就好啦。现在62ecb3 就被合并到master分支,并在master中添加了commit(作为一个新的commit)。cherry-pick 和merge比较类似,如果git不能合并代码改动(比如遇到合并冲突),git需要你自己来解决冲突并手动添加commit。

  • 合并某个分支上的一系列commits

在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。还以上例为例,假设你需要合并feature分支的commit76cada ~62ecb3 到master分支。

首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:

[plain] view plain copy

  1. git checkout -bnewbranch 62ecb3

然后,rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始。

[plain] view plain copy

  1. git rebase --ontomaster 76cada^

得到的结果就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。

其他方式:

[备忘]git,合并分支时,把多个commit合并为一个commit

1.直接合并(straight merge):

  把两条分支上的历史轨迹合并,交汇到一起。

  比如要把dev分支上的所有东东合并到master分支:

  首先先到master分支:git checkout master

  然后把dev给合并过来:git merge dev

  注意没参数的情况下merge是fast-forward的,即Git将master分支的指针直接移到dev的最前方。

  换句话说,如果顺着一个分支走下去可以到达另一个分支的话,那么Git在合并两者时,只会简单移动指针,所以这种合并成为快进式(Fast-forward)。

----------------------------------
  2.压合合并(squashed commits):

  将一条分支上的若干个提交条目压合成一个提交条目,提交到另一条分支的末梢。

  把dev分支上的所有提交压合成主分支上的一个提交,即压合提交:

  git checkout master

  git merge --squash dev

  此时,dev上的所有提交已经合并到当前工作区并暂存,但还没有作为一个提交,可以像其他提交一样,把这个改动提交到版本库中:

  git commit –m “something from dev”
 ----------------------------------
即,使用--squash参数,这样提交的commit只有一个parent,即原来的分支,

图形看起来,比较好看。

不加的话,有两个parent,还能看见合并过来那个分支的图形,看着乱~~

时间: 2024-10-13 00:43:35

合并多次提交 commits 到 新分支的相关文章

git提交本地代码到新分支

背景: 从branchA分支拉了一份代码,做了一些修改,但是不想提交到branchA分支,想新建一个分支branchB保存代码. 操作方法: 添加本地需要提交代码 git add . 提交本地代码 git commit -m "add my code to new branchB" push 到git仓库 git push origin branchA:branchB 仓库中原本没有branchB,提交后会生成新分支branchB,并将本地基于branchA修改的代码提交到branch

Git 合并多次提交

在合并分支的时候,希望将多次提交合并成一个,然后再 cherry-pick 到主分支. 合并分支 develop 分支做开发,可能会进行多次提交,但是在发布或者进行 PR 的时候,我们只希望看到一次提交.这个时候,我们需要进行 git rebase 之后进行合并. # HEAD~3 表示将近三次提交都合并,如果是将 2 次合并则为 HEAD~2 git rebase -i HEAD~3 这个时候,看到的是一上对 COMMIT 信息的提示 pick 9ba5122 2017 年 8 月 2 日 p

TortoiseGit- 创建本地新分支,提交推送到远程,本地新分支合并到工作分支,提交到远程工作分支等。

整体思路: 创建本地新分支 (create branch)  -- 切换到本地新分支工作 (switch/checkout) --提交修改 (commit)  -- 推送到远程新分支 (push)  --准备合并(明确要把哪个分支合并到哪个分支上,以新分支合并到工作分支上威力)-- 切回到本地的工作分支 -- 合并分支(选择新分支merge) -- 把新合并的提交推送到远程工作分支上 (push)  -- 合并结束 -- 删除远程新分支(本地分支随意,留作纪念...). 注意:在第一次推送到新分

Git 创建新分支并提交到远程仓

Git 创建新分支并提交到远程仓step1,在本地新建分支 git branch newbranchstep2:把本地分支push到远程 git push origin newbranchstep3:切换到该分支 git checkout newbranchstep4:查看本地修改 git statusstep5:添加本地修改 git add .step6:commit修改 git commit -m 'XXXX'step7:push代码 git pushstep8:查看分支 git branc

使用git rebase合并多次commit

使用git rebase合并多次commit 1. 背景 一个repo通常是由一个team中的多个人共同维护,如果需要增加新feature,那么就是一个feature分支了.由于开发中各种修改,本feature分支多次commit.最后提交master后,会看到乱七八糟的所有增量修改历史.其实对别人来说,我们的改动应该就是增加或者删除,给别人看开发过程的增量反而太乱.于是我们可以将feature分支的提交合并后然后再merge到主干这样看起来就清爽多了. 记得知乎上有个帖子提问为啥vue的作者尤

git从master分支checkout一个新分支,开发完毕合并到master出现冲突

项目是一个人独立开发的,master都是开发完的版本,v1.0,v1.1,v1.2……新开发任务时,从master checkout一个新的分支出来,进行开发,当开发完毕,我checkout到master时,出现了很多冲突文件,很不解,项目都是我一个人开发的,为什么会出现冲突呢,在经过问题排查时发现,我在dev分支上进行开发时,当时master上要修改一个小东西,就在master上进行了修改,然后进行了amend提交,造成了checkout分支时master的commit id和现在的commi

git拉取远程分支到本地分支或者创建本地新分支

git fetch origin branchname:branchname 可以把远程某各分支拉去到本地的branchname下,如果没有branchname,则会在本地新建branchname git checkout origin/remoteName -b localName 获取远程分支remoteName 到本地新分支localName,并跳到localName分支

在github上创建新分支

在github上创建新分支 - guang11cheng的专栏 - 博客频道 - CSDN.NET 在github上创建仓库: Create a new repository on the command line touch README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/BrentHuang/MyRepo.git gi

Github 创建新分支

一.clone Repository clone Github 上的Repository,如下: git clone [email protected].com:FBing/design-patterns.git 二.管理分支 1.查看分支 1.查看本地分支 使用 Git branch命令,如下: $ git branch * master *标识的是你当前所在的分支. 2.查看远程分支 命令如下: git branch -r 3.查看所有分支 命令如下: git branch -a 2.本地创