Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 13
    • Issues 13
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #98

Closed
Open
Created Jul 12, 2022 by liuyajun@liuyajunMaintainer

sourcetree 如何合并多个提交

背景

image

如果是多人协同开发,就会出现多个 review 的提交记录,协同人员一多那么可能连续几条、十几条都是 review 的日志,重复的日志说明一方面没有太大意义,另一方面造成冗余,日志很凌乱。

解决方案

方案一(推荐)

  1. 右键待合并日志的上一条日志,选择“交互式变基”
    image image

  2. 选中高亮第一条日志,点击“用以前的提交来 squash”
    image

  3. 重复点“用以前的提交来 squash”击,直至剩下一条信息,然后点击确定
    image

  4. 此时列表只剩下一条记录,但是它包含了被合并的所有内容,接下来需要修改日志的名称
    image

  5. 点击右上角的“文件状态”,再选择右下角的提交选项,选择修改上一个提交
    image

  6. 此时输入框内变为合并后的提交信息
    image

  7. 修改提交信息改成新的信息,点击提交,推送到远程
    image

方案二

  1. 右键待合并日志的上一条日志,选择“重置到这次提交”,如图
    image

  2. 选择“混合合并”
    image

  3. 此时,所有的本地提交已经回退到未提交状态
    image

  4. 删除远程当前分支,然后一次性提交即可
    image

方案三

  1. 执行合并名称
git rebase -i HEAD~n // 这里的n就是将多少次的commit合并,为了方便确认,可以通过git log查看需要合并的commit

git rebase -i HEAD~3 // 将三次提交合并

image

  1. 通过上面命令后,会出现很多pick,输入 i,进入编辑模式,将其他几项的 pick 改为 s
  • p, pick <提交> = 使用提交
  • s, squash <提交> = 使用提交,但挤压到前一个提交
pick commit1

s commit2

s commit3

image

  1. 然后ESC,冒号:wq 保存退出
    image

  2. 在这里可能会遇到代码冲突的问题,需要先在代码里merge,再执行git rebase --continue继续,或者停止命令:git rebase --abort

  3. 步骤2中,如果一切正常,那么可以推送代码到分支

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking