首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用git重置一个旧的提交,以转移到另一个提交

要用git重置一个旧的提交,以转移到另一个提交,可以使用git的reset命令。reset命令可以将当前分支的HEAD指针移动到指定的提交,并且可以选择是否保留被重置的提交内容。

下面是重置一个旧的提交的步骤:

  1. 首先,使用git log命令查看提交历史,找到需要重置的旧提交的哈希值(commit hash)或者相对引用(如HEAD~n,表示向上数第n个提交)。
  2. 使用git reset命令进行重置。有三种重置模式可以选择:
  • 软重置(soft reset):使用git reset --soft <commit>命令,将HEAD指针移动到指定的提交,但不改变索引(暂存区)和工作目录的内容。这样可以将旧提交重新放到暂存区,方便进行修改和重新提交。
  • 混合重置(mixed reset):使用git reset --mixed <commit>命令,将HEAD指针移动到指定的提交,并且重置索引(暂存区)的内容,但不改变工作目录的内容。这样可以将旧提交的修改内容撤销,并保留在工作目录中,方便进行修改和重新提交。
  • 硬重置(hard reset):使用git reset --hard <commit>命令,将HEAD指针移动到指定的提交,并且重置索引(暂存区)和工作目录的内容,将它们完全回退到指定提交的状态。这样会丢失旧提交的修改内容,请谨慎使用。

例如,要将当前分支的HEAD指针重置到旧提交abcd1234,并且保留旧提交的修改内容,可以使用命令git reset --soft abcd1234

  1. 如果需要,对重置后的内容进行修改和重新提交。可以使用git add命令将修改的文件添加到索引(暂存区),然后使用git commit命令进行提交。

总结一下,使用git reset命令可以重置一个旧的提交,并根据需要选择不同的重置模式。重置后可以对内容进行修改和重新提交。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用 Git Rebase 优雅回退代码?

命令描述 使用命令 git revert commit_id 能产生个 与 commit_id 完全相反提交,即在 log 中会看到条新提交 new_commit_id, revert 提交就是删除...场景2:在进行代码 merge 时,也会把 merge 信息产生次新提交,而 revert 这次 merge commit 时需要指定 m 参数,指定 mainline。...命令使用 # 重置暂存区指定文件,与上次commit保持致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上次commit保持致 $ git reset --...hard # 重置当前分支指针为指定commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支HEAD为指定commit,同时重置暂存区和工作区,与指定...参考 [1] 如何用 Git 优雅回退代码,别搞错了!

3.5K30

7.7 Git 工具 - 重置揭密

重置揭密 在继续了解更专业工具前,我们先讨论下 reset 与 checkout。 在你初次遇到 Git 命令中,这两个是最让人困惑。...另外两棵树种高效但并不直观方式,将它们内容存储在 .git文件夹中。 工作目录会将它们解包为实际文件以便编辑。 你可以把工作目录当做 沙盒。...当检出个分支时,它会修改 HEAD 指向新分支引用,将 索引 填充为该次提交快照,然后将 索引 内容复制到 工作目录 中。 重置作用 在以下情景中观察 reset 命令会更有意义。...那么可以运行 git reset --soft HEAD~2 来将 HEAD 分支移动到个旧提交上(即你想要保留提交): ? Figure 7-17....reset 会移动 HEAD 分支指向,而 checkout 只会移动 HEAD 自身来指向另一个分支。

42830

从 Subversion 过渡到 Git

用户在本地计算机上拥有自己仓库,并且包含所有的项目历史记录。用户可以在自己本地计算机上做任何想要操作,例如提交(commit),历史检查(inspect history),恢复到个旧版本等等。...所有其他版本和分支都被保存在你本地仓库中,并且随时都可以非常快速地恢复到个旧版本。定要记住 Git 分布式特性:分支可以被发布到在远程服务器上,但是本地上分支对于日常工作更加重要。...在 Git 中,每提交必须拥有个唯ID,因此个哈希字符串就代替了那个依次递增版本号。 分享工作 在 Subversion 中,在提交之后,你工作会被自动地转移到中央仓库上去。...利用它独无二 “暂存区(staging area)” 概念,Git 可以帮助你打造很细微和精准提交。你可以准确地判断哪些更改将被包含在你提交中,即使只是行改动。...Git 正在被越来越多知名公司和开源项目所使用, RubyOn Rails,jQuery,Perl,Debian,Linux 内核等等。

58321

如何在 Git重置、恢复,返回到以前状态

例如,如果我们重置 master 为当前提交回退两个提交位置,我们可以使用如下之方法: $ git reset 9ef9173 (使用个绝对提交 SHA1 值 9ef9173) 或: $ git...如果我们在链中每个提交中向文件添加行,种方法是使用 reset 使那个提交返回到仅有两行那个版本,git reset HEAD~1。...另一个方法是添加个新提交去删除第三行,以使最终结束变成两行版本 —— 实际效果也是取消了那个更改。...当我们这种方式使用 Git 工作时,我们基本规则之是:在你本地仓库中使用这种方式去更改还没有推送代码是可以。...从本质上来说,Git个分支中每个不同提交尝试“重放”到另一个分支中。

3.5K20

Git : 每行命令都算数

git rebeae merge 会把公共分支和你当前commit 合并在起,形成个新 commit 提交 git merge git cherry-pick 对于多分支代码库,将代码从个分支转移到另一个分支是常见需求...$ git cherry-pick feature 上面代码表示将feature分支最近提交转移到当前分支。 Cherry pick 支持次转移多个提交。...比如,我们commit了三个版本(版本、版本二、 版本三),突然发现版本二不行(:有bug),想要撤销版本二,但又不想影响撤销版本三提交,就可以用 git revert 命令来反做版本二,生成新版本四...比如当前commit是这样A-1-2-3-4-5-6-7-8,你提交是1,那么我们执行如下命令: git reset --soft A // 重置本地分支HEAD指针 git commit...Git stash 临时储藏 当我们在当前分支开发某个需求时候,遇到了另一个需求联调问题,需要切换到另一个分支上去解决问题。怎么办?

25730

看小姐姐用动图展示 10 大 Git 命令

可将个分支修改融入到另一个分支种方式是执行 git merge。Git 可执行两种类型合并:fast-forward 和 no-fast-forward。...当我们想要合并两个分支文件中行代码上有不同修改,或者个分支删除了个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。 在这样情况下,Git 会询问你想要保留哪种选择?...尽管合并冲突往往很让人厌烦,但这是合理Git 不应该瞎猜我们想要保留哪些修改。 变基(Rebasing) 我们刚看到可通过执行 git merge 将个分支修改应用到另一个分支。...另种可将个分支修改融入到另一个分支方式是执行 git rebase。 git rebase 会将当前分支提交复制到指定分支之上。...比如当合并了另一个分支或你同事推送了个快速修复时。 通过在这个远程分支上执行 git fetch,我们就可在本地获取这些修改。

46220

工作流目了然,看小姐姐用动图展示10大Git命令

可将个分支修改融入到另一个分支种方式是执行 git merge。Git 可执行两种类型合并:fast-forward 和 no-fast-forward。...当我们想要合并两个分支文件中行代码上有不同修改,或者个分支删除了个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。 在这样情况下,Git 会询问你想要保留哪种选择?...另种可将个分支修改融入到另一个分支方式是执行 git rebase。 git rebase 会将当前分支提交复制到指定分支之上。 ?...硬重置 有时候我们并不想保留特定提交引入修改。不同于软重置,我们应该再也无需访问它们。Git 应该直接将整体状态直接重置到特定提交之前状态:这甚至包括你在工作目录中和暂存文件上修改。 ?...比如当合并了另一个分支或你同事推送了个快速修复时。 通过在这个远程分支上执行 git fetch,我们就可在本地获取这些修改。

1.1K10

SVN与Gi较量对比

这样就开发者就可以回归到任何个时间点个旧版本(对于SVN,没修改次文件,SVN就会创建个叫做版本概念,是从0 开始自增序列)。...虽然平时大家都是将代码提交到中央服务器上再统pull别人代码,但实际情况你可以总是pull张三库,然后push给李四等等操作。 本地提交: 本地提交好处主要有3点: , 断网提交 。...[file] # 恢复暂存区当前目录所有文件到工作区 $ git checkout . # 恢复工作区到指定 commit $ git checkout [commit] # 重置暂存区指定文件,...与上次 commit 保持致,但工作区不变 $ git reset [file] # 重置暂存区与工作区,与上次 commit 保持致 $ git reset --hard # 重置当前分支指针为指定...commit,同时重置暂存区,但工作区不变 $ git reset [commit] # 重置当前分支HEAD为指定 commit,同时重置暂存区和工作区,与指定 commit 致 $ git reset

91020

Git常用命令

git三区 工作区:写代码地方 暂存区:临时存储 git add …地方 本地库 :git commit 地方 远程库:远程仓库 创建个版本库 初始化仓库 git init 2.设置提交信息 git...分支名 将服务器代码下载下来相对于 svncheckout git log 打印完整格式提交日志 git log --pretty=oneline 行查看(展示完整hash值) git...重置暂存区 --hard 在本地库移动HEAD指针 重置暂存区 重置工作区 git branch 查看分支 git branch 分支名称 建立分支 git checkout...分支名称 切换分支 git merge 分支名 将当前分支与另一个分支合并 git branch -d 分支名 删除本地分支 git remote add 别名(origin ) 地址... #下面是忽略文件/文件名 .env vendor/ storage/ #通配忽略 doc/2.txt abc/*.txt test/ *.tmp 提交时不会提交这里面的文件/目录

28510

如何使用Git:参考指南

git log --follow my_script.py 显示个分支上提交,而不显示另一个分支上提交。这将显示在a-branch上而非b-branch上提交。...git log a-branch..b-branch 查看引用日志(reflog)查看分支和其他引用提示何时在存储库中最后更新。...git reflog 通过其提交字符串或哈希更易于阅读格式显示Git任何对象。 git show de754f5 显示更改 该git diff命令显示提交,分支等之间更改。...git rebase upstream/master 重置 有时,包括在rebase之后,您需要重置工作树。您可以使用以下命令重置为特定提交,并删除所有更改。...git push --force origin master 要从Git目录中删除本地未跟踪文件和子目录获得干净工作分支,您可以使用git clean。

1.3K94

git cherry-pick 教程

对于多分支代码库,将代码从个分支转移到另一个分支是常见需求。 这时分两种情况。种情况是,你需要另一个分支所有代码变动,那么就采用合并(git merge)。...$ git cherry-pick 上面命令就会将指定提交commitHash,应用于当前分支。这会在当前分支产生个新提交,当然它们哈希值会不样。...git cherry-pick命令参数,不定是提交哈希值,分支名也是可以,表示转移该分支最新提交。...$ git cherry-pick feature 上面代码表示将feature分支最近提交转移到当前分支。 二、转移多个提交 Cherry pick 支持次转移多个提交。...(3)--quit 发生代码冲突后,退出 Cherry pick,但是不回到操作前样子。 五、转移到另一个代码库 Cherry pick 也支持转移另一个代码库提交,方法是先将该库加为远程仓库。

78750

Git】616- git命令进阶和复习(带动图效果)

由于篇幅原因,有兴趣可以在了解下交互式变基,交互式变基修改commit,commit合并、顺序调整、commit提交日志修改。 4. 重置(reset) 撤销变更方式有两种。...,这个部分这篇文章小姐姐用动画图解Git相对好些 4.1 软重置 最大特点:撤回到特定提交之后,已有的修改会保留 以下图为例:9e78i 提交添加了 style.css 文件,035cc 提交添加了...使用 git status 查看,发现当前操作空间空空也。Git 丢弃了 9e78i 和 035cc 两次提交引入修改,将仓库重置到 ec5be 时状态 5....包括合并、重置、还原:基本上记录了对分支任何更 使用场景:假设你不小心使用 git reset 命令硬重置仓库到某个提交。后面突然想到,重置导致了些已有的正常代码误删 ?...为个,这时候就可以用squash merge把某个分支上所有提交都合并成提交 git merge --squash 分支名

90320

常用 git 命令以及处理技巧

# 重置提交文件修改 git checkout src/xxx.js # 重置提交文件夹 git checkout src/xxx/ # 查看所有分支 git branch -a # 切换分支...git show [commit] 非常用,但必须掌握命令 # 当前所在分支代码为基础,创建个新分支 git checkout -b feature_1_3_1 # 将当前分支推送到远程 git...git fetch origin --prune # 合并某分支到当前分支 git merge feature_1_3_0 # 重置到最近提交代码 # 不会删除你新添加文件 git reset...--hard # 重置到某次提交代码 # 可以从新往旧恢复,可以从旧恢复到新 git reset [commit] git 命令很多,也不容易记忆,善用 ctrl + r 快捷键,可以在命令行中进行历史命令搜索...但在 windows 上 ssh 秘钥需要配置并长期开启个软件(IDE 另说),因此,我们可以通过另一个方式来实现无密码操作。

55520

Git汇总--版本库操作

当前工作分支,注意非远程) 获取–fetch or pull fetch 从另一个存储库下载对象和引用。.../refs/heads/master e695606fc5e31b2ff9038a48a3d363f4c21a3d86 reset 重置命令git reset 个用途就是修改引用(master)游标...注意: 使用重置命令很危险,会彻底丢弃历史。那么还能够通过浏览提交历史办法找到丢弃提交ID,再使用重置命令恢复历史么?不可能!因为重置提交历史也改变了。在个共享仓库中这会造成问题。...commit revert merge commit 这时需要添加 -m 选项代表这次 revert 个 merge commit,-m 选项接收参数是个数字,数字取值为 1 和 2,也就是...这和上重置命令大不相同:重置默认值是 HEAD,而检出默认值是暂存区。

69431
领券