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

如何使用 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 优雅回退代码,别搞错了!

4.7K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    7.7 Git 工具 - 重置揭密

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

    45330

    从 Subversion 过渡到 Git

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

    62121

    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 临时储藏 当我们在当前分支开发某个需求的时候,遇到了另一个需求的联调问题,需要切换到另一个分支上去解决问题。怎么办?

    28630

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

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

    4K20

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

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

    48820

    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

    1K20

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

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

    1.2K10

    Git常用命令

    git三区 工作区:写代码的地方 暂存区:临时存储 git add …的地方 本地库 :git commit 的地方 远程库:远程仓库 创建一个版本库 初始化仓库 git init 2.设置提交信息 git...分支名 将服务器代码下载下来相对于 svn的checkout 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 提交时不会提交这里面的文件/目录

    31410

    如何使用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.4K94

    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 也支持转移另一个代码库的提交,方法是先将该库加为远程仓库。

    84950

    常用 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 另说),因此,我们可以通过另一个方式来实现无密码操作。

    57820

    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,而检出的默认值是暂存区。

    72931

    【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 分支名

    1K21
    领券