You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从sequential远程分支拉取1月1日至28日的提交?

嘿,刚好之前折腾过类似的需求,先给你明确说:没办法直接用git pull sequential fromdate todate这种命令实现按日期范围拉取提交。Git的pull本质是fetch加merge,它只能拉取整个分支、指定分支或者单个提交哈希,根本不支持直接通过日期区间来筛选要拉取的内容。

下面给你两个不用cherry-pick的可行方案,根据你的需求选就行:

方案1:生成日期范围补丁并应用(适合只需要代码变更、不需要保留原提交记录)

这种方法相当于把指定时间段的代码差异打包成补丁,再贴到你的本地分支上:

  • 先把sequential远程分支的最新内容拉到本地缓存(不会合并到当前分支):
    git fetch sequential
    
  • 生成1月1日到1月28日的代码变更补丁:
    git diff sequential/master@{"2024-01-01"} sequential/master@{"2024-01-28"} > seq-date-patch.patch
    
    这里的@{"YYYY-MM-DD"}是Git的日期引用语法,用来定位某个日期时分支的状态
  • 切换到你要应用补丁的本地分支(比如main):
    git checkout main
    
  • 应用补丁:
    git apply seq-date-patch.patch
    
  • 检查代码没问题后,提交变更:
    git add . && git commit -m "Apply sequential changes from 2024-01-01 to 2024-01-28"
    

方案2:用git rebase --onto迁移指定日期的提交(适合需要保留原提交记录)

这个方法可以批量把指定时间段的提交完整迁移到你的本地分支,底层逻辑和cherry-pick类似,但不需要手动逐个选择提交:

  • 先拉取sequential远程分支的最新内容:
    git fetch sequential
    
  • 找到sequential分支上1月1日之前的最后一个提交哈希:
    git rev-list -1 --before="2024-01-01" sequential/master
    
    假设输出的哈希是abc123
  • 找到sequential分支上1月28日的最后一个提交哈希:
    git rev-list -1 --until="2024-01-28" sequential/master
    
    假设输出的哈希是def456
  • 切换到你的目标本地分支(比如main):
    git checkout main
    
  • 把abc123到def456之间的所有提交迁移到当前分支:
    git rebase --onto main abc123 def456
    
    过程中如果有冲突,解决冲突后执行git rebase --continue即可

内容的提问来源于stack exchange,提问作者Rajarshi Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:44:33