Git(8)之分支间同步特定提交

这篇具有很好参考价值的文章主要介绍了Git(8)之分支间同步特定提交。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Git(8)之分支间同步特定提交

Author:Once Day Date:2024年4月7日

漫漫长路有人对你微笑过嘛…

全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客

1. 分支间同步提交

在使用Git这个强大的分布式版本控制系统时,经常会遇到需要将一个分支的提交同步到另一个分支的情况。

第一种情况是同步分支上所有改动到另外一个分支,非常常见,这里只是简单介绍一下。

  • 最直接的方法是使用git merge命令。例如,想要把一个分支(比如feature)上的改动合并到另一个分支(比如master)时,可以先切换到目标分支master,然后执行git merge feature。这样,feature分支上的所有提交就会被合并到master上。如果遇到冲突,Git会提示需要手动解决。

  • 另外一种方法是使用git rebase命令。Rebase的意思是变基,简单来说就是把一个分支上的修改放到另一分支的最前面。这样做的好处是能够创建一个更干净、线性的提交历史。使用方法是先切换到要同步的分支,比如feature,然后执行git rebase master。这样feature分支就会把master分支上新的提交应用到feature分之前。在变基的过程中,如果发生冲突,也需要手动解决。

第二种情况是同步某一个特定的提交,例如需要把develop版本分支上的auto-test测试代码提交同步到temp版本分支上。

  • 最常见的方式是手动把auto-test代码全部复制一遍,然后再提交新的commit到temp版本分支上,这个方式效率较低,需要人工同步每个改动,也容易产生遗漏。
  • 通过git stash命令暂存提交,然后在temp版本分支应用修改(apply stash),效率较好,但是需要提前保存改动信息,而且commit信息也还是需要在输入一遍。
  • 使用git cherry-pick命令选择一个或几个提交,然后在temp分支上重新应用。这个方式效率最高,代码改动和提交信息都是直接照搬原有develop分支,不需要额外输入信息。

在实际工作中,上述的几种方法都可以使用。不管是全自动化的同步还是手动同步,最好都人工再审核一遍,毕竟一旦出了问题,耗费时间和精力远比人工检查要多。

2. cherry-pick同步分支间的特定提交

git cherry-pick是一个非常实用的Git命令,它允许选择性地将某个分支上的单个提交(或一系列提交)应用到当前分支上。

这个命令的名称来源于“挑选樱桃”的比喻,意味着可以从众多提交中精选出需要的那几个。

git cherry-pick命令的基本格式如下,其中<commit-hash>是希望应用的提交的哈希值:

# 通过git log或者其他手段来获取commit iD
git cherry-pick <commit-hash>

如果这个提交能够顺利地应用到当前分支上,而没有任何冲突,那么可以看到一个新的提交出现在当前分支的提交历史中这个新提交的内容与通过cherry-pick命令选取的原始提交的内容相同,但是它会有一个新的提交哈希值

如果在应用某个提交时遇到了冲突,Git会停止cherry-pick操作,并需要手动编辑冲突的文件,最后使用git add命令来标记冲突已经解决。在解决完所有冲突并更新索引后,可以通过git cherry-pick --continue来继续应用提交

如果决定不应用当前的cherry-pick操作,可以使用git cherry-pick --abort来取消

git cherry-pick还支持一些有用的选项,例如:

  • -n--no-commit:应用更改但不自动创建提交,允许手动合并多个提交的更改,并最终作成一个提交。
  • -e--edit:在提交时打开编辑器,让你可以编辑提交信息。
  • -x:在提交信息中包含一个说明,指出提交是通过cherry-pick从哪个提交哈希值应用过来的。

git cherry-pick常用于修复bug,当在测试分支上发现了一个bug,并在该分支上修复后,可以通过cherry-pick将修复的提交应用到生产分支上。

3. 实例展示

首先确认需要同步的源分支和目标分支。

ubuntu->tdata:$ git branch -a
  develop
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

从上述命令中,有四个分支,两个远程分支,两个本地分支。我们主要从develop分支同步最新提交到master分支上。

在master分支上通过git log获取提交commit(或者其他手段),如下所示:

ubuntu->tdata:$ git log develop
commit bc75713f30a34e292f59f39d439c08f7ea6b21ed (develop)
Author: Once Day <onceday@qq.com>
Date:   Sun Apr 7 22:55:59 2024 +0800

    save files

commit d71a12145f1ccd8d8f93f1cc937b70fa22d3ce27 (HEAD -> master, origin/master, origin/HEAD)
Author: Once Day <onceday@qq.com>
Date:   Sat Mar 9 21:50:05 2024 +0800

    save some
......

第一个提交就是需要同步的提交,复制其commit值,然后使用git cherry-pick命令同步

ubuntu->tdata:$ git cherry-pick bc75713f30a34e292f59f39d439c08f7ea6b21ed
[master 69dc035] save files
 Date: Sun Apr 7 22:55:59 2024 +0800
 9 files changed, 405 insertions(+), 29 deletions(-)
 create mode 100644 cs-test/alias-test.c
 create mode 100644 cs-test/hash-test.c
 create mode 100644 perf-ana/git-sync-simple.sh
 create mode 100755 perf-ana/git-sync.sh
 create mode 100644 perf-ana/objdump-func.sh
 
ubuntu->tdata:$ git log
commit 69dc035383d742c95ea2814972191d82ba9a91a3 (HEAD -> master)
Author: Once Day <onceday@qq.com>
Date:   Sun Apr 7 22:55:59 2024 +0800

    save files

一般情况下,都是非常顺利直接同步,如果存在冲突,手动merge即可。文章来源地址https://www.toymoban.com/news/detail-847077.html

到了这里,关于Git(8)之分支间同步特定提交的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git——合并分支commit记录 squash提交

         在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需求和bug混合着写,不可能每个分支都暂存一下去其他分支查看吧,因此总会

    2024年02月14日
    浏览(61)
  • 【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤

    实现效果: 撤回这个未push到远程的记录 操作步骤: 最后一次commit到本地的记录没有了, 记录回到了暂存区 有撤销记录的: 实现效果: 本质,就是重新提交对 第二次提交 删除的操作 撤销后,本地和远程分支上有撤销记录 操作步骤: 无撤销记录的: 实现效果: 远程最后

    2024年02月10日
    浏览(44)
  • vscode插件——git分支管理、查看log提交的历史记录

    不辜负曾经那份热爱 当你觉得vscode用的不顺手时,就多找些插件叭❤ 一、Git Graph 1. 安装 选择红框的\\\"扩展\\\",搜索\\\"Git Graph\\\",直接安装即可。 2. 使用 打开源代码管理菜单,会发现右上角有个小分支图标,直接点击打开Git Graph。也可以直接从底部的Git Graph打开。 打开后,可查

    2024年02月11日
    浏览(75)
  • 【Git】git push --mirror 迁移项目到其他代码仓库,且保留分支与提交记录。

    需要把云效代码仓库的某些项目,迁移到公司内部的代码仓库。且需要保留迁移项目的分支和提交记录。 百度各种方法,并不停本地测试,结合以往gitlab操作经验解决。 执行前需要,提前在其他代码仓库里新建好项目(New Project),得到Rename repository Path。 执行逻辑 1.根据远

    2024年02月12日
    浏览(51)
  • vscode查看git提交(commit)的记录,及更新当前分支的内容,暂存本地库,提交远程库

    使用 Git Graph插件 ,可以查看git log的不同分支历史提交记录以及每个开发者一次性提交了哪些文件 使用 博客来源:https://www.panziye.com/java/web/3600.html 按如下选择,即可更新内容 将更新后的文件,且需要提交本地库的文件点击 + 按钮 按如下选择 过后会提示要输入提交信息,按

    2024年02月11日
    浏览(62)
  • git主干master分支回滚到历史版本(不会有错误的提交记录)

    master版本,“合并错了”的回滚步骤: (这样做不会有“合并错了”的提交记录)

    2024年01月21日
    浏览(46)
  • git cherry-pick命令(合并单个或多个提交记录到当前分支)

    Git cherr-pick:选择性合并提交 在项目中,我们常常需要选择性的把某个提交或某些提交单独的合并到当前分支,Git 提供了一个称为 cherry-pick 的命令来执行这个操作。 1、要在当前分支上合并某个提交,可以使用以下命令: git cherry-pick commit-hash 其中, 是要合并的提交的哈希值

    2024年02月04日
    浏览(60)
  • IDEA中使用Git提交代码(包括合并分支)

    在IDEA中使用git提交代码到远程仓库,整体可分为如下几个步骤: 后面会介绍合并分支。 前提: 1.注册有GitHub或者Gitee账号;本地安装有git; 2.在Github和Gitee用户中心配置SSH公钥。(设置–SSH公钥)处有生成公钥教程。 步骤: 1.创建远程仓库(github或者gitee); 2.创建本地仓库

    2024年02月04日
    浏览(95)
  • Git小乌龟tortoisegit使用自我小结(初始化、提交、推送、拉取、新建分支、切换分支、创建空白分支)

    新建一个新文件夹File,然后进入 创建版本库 初始化之后,分支无法显示,需要创建文件并提交,才是真正的初始化 创建文件file01.txt 右键空白处,点击提交按钮 对提交内容进行操作 第一步 第二步 第一步 第二步 此方法也可以用于 文件夹里已有文件,但是不想删除,直接推

    2024年02月16日
    浏览(79)
  • IntelliJ IDEA 上 使用git 合并其他分支,合并某一个提交

    找到git——merge… 选择需要合并的分支,不能选和当前分支一样噢 合并,推送即可 点击左下角git——右键切换分支——选择需要合并的分支——选择需要合并的代码——ch 推送即可

    2024年02月04日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包