首页 > 其他分享 >将最近的提交移动到Git的新分支

将最近的提交移动到Git的新分支

时间:2023-10-07 20:56:14浏览次数:34  
标签:reset git -- Git master 提交 分支

内容来自 DOC https://q.houxu6.top/?s=将最近的提交移动到Git的新分支

如何将主分支上的最近提交移动到新分支,并将主分支重置为这些提交之前的状态?例如,从以下状态:

master A - B - C - D - E

变成这样:

newbranch     C - D - E
             /
master A - B 


移动到现有分支

如果你想将你的提交移动到一个现有分支,它看起来像这样:

git checkout existingbranch
git merge branchToMoveCommitFrom
git checkout branchToMoveCommitFrom
git reset --hard HEAD~3 # 回退3个提交。你*会*丢失未提交的工作。
git checkout existingbranch

在执行git reset --hard HEAD~3之前,你可以使用git stash存储未提交的编辑。完成后,你可以使用git stash pop检索存储的未提交编辑。

移动到新分支

警告:这种方法有效,因为你使用第一个命令创建了一个新分支:git branch newbranch。如果你想将提交移动到现有分支,你需要在执行git reset --hard HEAD~3之前将更改合并到现有分支(请参阅上面的Moving to an existing branch)。 如果你不先合并更改,它们将会丢失。

除非有其他情况,否则这可以通过分支和回滚轻松完成。

# 注意:任何未提交的更改都将丢失。
git branch newbranch      # 创建一个新分支,保存所需的提交
git checkout master       # 检出master,这是你要返回的地方
git reset --hard HEAD~3   # 通过3个提交将master回退(确保你知道需要回退多少个提交)
git checkout newbranch    # 转到仍然具有所需提交的新分支

但是一定要确定要回退多少个提交。或者,你可以直接提供要在master(/current)分支上“回退”到的提交的哈希值(或引用,如origin/master),例如:

git reset --hard a1b2c3d4

注意:你只会从master分支“丢失”提交,但不用担心,你会在新分支中拥有这些提交!在完成上述4个步骤的命令后,检查这一点的一个简单方法是查看git log -n4,它将显示newbranch实际上保留了3个提交(原因是newbranch在那些更改已经被提交到master时已经创建!)。它们只是从master中删除了,因为git reset只影响在执行其时检出的分支,即master(参见git reset的描述:当前HEAD重置为指定状态)。但是git status不会显示newbranch上的任何检出,这可能一开始会让人感到意外,但这实际上是预期的。

最后,你可能还需要将最新的更改强制推送到主仓库:

git push origin master --force

警告:使用Git版本2.0及更高版本,如果你稍后对新分支执行git rebase原始(master)分支,你可能需要在rebase期间使用显式的--no-fork-point选项以避免丢失携带的提交。设置branch.autosetuprebase always可以更容易地实现这一点。有关详细信息,请参阅John Mellor的回答。

标签:reset,git,--,Git,master,提交,分支
From: https://www.cnblogs.com/xiaomandujia/p/17747464.html

相关文章

  • CentOS环境:离线安装配置gitlab(适用于内网环境)
    前言:  此篇是为了完结真实的物理隔离环境下、验证yum缓存的文件包安装配置是否成功,对上篇在线安装文章的补充。1.互联网电脑环境准备1.1电脑环境配置信息IP:192.168.31.164OS:CentOSLinuxrelease7.9.2009(Core)1.2清除yum的rpm包缓存数据包清除前的数据记录:[root@bdlab......
  • Gitlab管理员忘记密码
    目录Gitlab管理员忘记密码一、背景二、邮箱方式找回1.在gitlab登录窗口2.输入邮箱账号找回3.重设密码三、Bash命令方式找回1.切换到git用户2.查看gitlab命令文件3.进入gitlab控制台4.查询gitlab超级管理员信息4.重置密码并报存用户对象5.返回gitlab登录界面重新登录Gitlab管理员......
  • 【好玩】如何在github主页放一条贪吃蛇
    前言......
  • 【好玩】如何在github主页放一条贪吃蛇
    前言......
  • GitBooK使用教程存档
    Gitbook使用教程GitBook文档(中文版)Gitbook简单介绍......
  • 重新编译kyuubi-1.6.1版本使其提交flink sql流式任务时不阻塞
    kyuubi-1.6.1版本对于flinksql的支持不是很好,在提交流式任务时会阻塞进程,为了修复这个缺陷,需要修改源代码并重新编译待编译的kyuubi版本:kyuubi-1.6.1-incubating适配的flink版本:flink-1.14.41、下载kyuubi-1.6.1-incubating版本的源代码,并导入IDEA中gitclone-bv1.6.1-incu......
  • 代码源:a-good string(CF1385D,分支)
    传送点击查看代码#include<bits/stdc++.h>usingnamespacestd;chars[131080];int_solve(intL,intR,charx){ if(L==R)returns[L]!=x; intM=L+(R-L)/2; intt1=0,t2=0; for(inti=L;i<=M;++i)if(s[i]!=x)t1++; for(inti=M+1;i<=R;++i)if(s[i]!=x)......
  • 表单提交由submit改为异步的方式
    1,submit方式(页面会按action的url跳转,这个不方便一些交互)functionsaveSingleYx(){$('#myTwoForm').submit();}2,ajax异步方式functionsaveSingleYx(){//document.getElementById('myTwoForm').setAttribute("action","saveSingleYx.ht&qu......
  • 第一次git上传的完整流程
    第一次git上传的完整流程使用git简单命令上传代码push到远程仓库+简单介绍了一个.git文件结构。代码上传到gitee和github流程一样的,不过你上传到github可能网不行失败,所以我们使用gitee*前置说明你必须有git工具并且配置了环境变量。配置环境变量使用git会更方便。测......
  • Git .gitattributes 配置
    .gitattributes文件是一个用来配置Git版本控制系统的文件,它的作用主要包括以下几个方面:定义文件属性:.gitattributes文件可以用来指定特定文件或文件类型的属性,例如文本文件、二进制文件、合并策略等。这可以帮助Git更好地处理不同类型的文件。控制行尾格式:你可以使用......