git学习记录4-----更改提交操作

2023-11-09

回溯历史版本

回溯到feature-A之前

命令git reset
&emps;&emps;&emps;&emps;借助分散仓库的优势,可以在不影响其他仓库的前提下对历史版本进行操作。在这里,为了让各位熟悉对历史版本的操作,我们先回溯历史版本,创建一个名为 fix-B 的特性分支,如下图:
回溯到==feature-A之前,创建fix-B分支==
&emps;&emps;&emps;&emps;要让仓库的 HEAD、暂存区、当前工作树回溯到指定状态,需要用到 git rest --hard命令

需要注意的是回到某个时间点,需要那个时间的哈希值,这个可以通过上一节的笔记git log --graph查询到,如下

R@R MINGW64 ~/gitlearn (master)
$ git log --graph
*   commit e1e5b99846f148f04f0cc87a0a75bbf442937f3f (HEAD -> master)
|\  Merge: 0bffe81 6c64c8c
| | Author: RR <xxxxxxxxx@qq.com>
| | Date:   Mon Oct 24 20:01:18 2022 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit 6c64c8c35152e33e478a24fed2e3851ffb7d6577 (feature-A)
|/  Author: RR <xxxxxxxxx@qq.com>
|   Date:   Mon Oct 24 19:37:37 2022 +0800
|
|       Add -feature-A
|
* commit 0bffe81fd4a24b84f11b05515962211229b65ae1
| Author: RR <xxxxxxxxx@qq.com>
| Date:   Mon Oct 24 10:41:15 2022 +0800
|
|     add a title to README.md
|
* commit d07f69bc0e3f3d4268bd377f9585e80718756c62
  Author: RR <xxxxxxxxx@qq.com>
  Date:   Sat Oct 22 18:15:55 2022 +0800

可以看到在我创建feature-A之前的master的哈希值0bffe81fd4a24b84f11b05515962211229b65ae1

R@R MINGW64 ~/gitlearn (master)
$ git reset --hard 0bffe81fd4a24b84f11b05515962211229b65ae1
HEAD is now at 0bffe81 add a title to README.md

现在我们查看一下README.md是否回到了初始的状态
回到了feature-A之前的状态

创建fix-B

使用以前提到的命令
git checkout -b fix-B

R@R MINGW64 ~/gitlearn (master)
$ git checkout -b fix-B
Switched to a new branch 'fix-B'

R@R MINGW64 ~/gitlearn (fix-B)
$

现在的状态如下:

当前的状态
我们修改一下当下的README.md做个标记
添加一行fix-B

R@R MINGW64 ~/gitlearn (fix-B)
$ git status
On branch fix-B
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

R@R MINGW64 ~/gitlearn (fix-B)
$ git add README.md

R@R MINGW64 ~/gitlearn (fix-B)
$ git commit -m "fix-B"
[fix-B f311c00] fix-B
 1 file changed, 3 insertions(+), 1 deletion(-)

进行提交

推进至feature-A后的状态

如下图:
目标状态

使用git log 命令只能看到以当前为止的日志

看不见feature-A分支的日志
如下:

R@R MINGW64 ~/gitlearn (fix-B)
$ git log --graph
* commit 0bffe81fd4a24b84f11b05515962211229b65ae1 (HEAD -> fix-B, master)
| Author: RR <97416032@qq.com>
| Date:   Mon Oct 24 10:41:15 2022 +0800
|
|     add a title to README.md
|
* commit d07f69bc0e3f3d4268bd377f9585e80718756c62
  Author: RR <97416032@qq.com>
  Date:   Sat Oct 22 18:15:55 2022 +0800

      my first commit

&emps;&emps;&emps;&emps;要想看到当前仓库的操作日志需要git reflog命令,找到回溯之前的哈希值,调用==git reset --hard 哈希值 ==回到回溯之前

R@R MINGW64 ~/gitlearn (fix-B)
$ git reflog
f311c00 (HEAD -> fix-B) HEAD@{0}: commit: fix-B
0bffe81 (master) HEAD@{1}: checkout: moving from master to fix-B
0bffe81 (master) HEAD@{2}: reset: moving to 0bffe81fd4a24b84f11b05515962211229b65ae1
e1e5b99 HEAD@{3}: merge feature-A: Merge made by the 'ort' strategy.
0bffe81 (master) HEAD@{4}: checkout: moving from feature-A to master
6c64c8c (feature-A) HEAD@{5}: checkout: moving from master to feature-A
0bffe81 (master) HEAD@{6}: checkout: moving from feature-A to master
6c64c8c (feature-A) HEAD@{7}: commit: Add -feature-A
0bffe81 (master) HEAD@{8}: checkout: moving from master to feature-A
0bffe81 (master) HEAD@{9}: commit: add a title to README.md
d07f69b HEAD@{10}: commit (initial): my first commit

&emps;&emps;&emps;&emps;在日志中,我们可以看到 commit、checkout、reset、merge 等 Git 命令的执行记录。只要不进行 Git 的 GC(Garbage Collection,垃圾回收),就可以通过日志随意调取近期的历史状态,就像给时间机器指定一个时间点,在过去未来中自由穿梭一般。即便开发者错误执行了 Git 操作,基本也都可以利用 git reflog命令恢复到原先的状态。
&emps;&emps;&emps;&emps;可以看到==e1e5b99==就是我们merge feature-A后的哈希值。
现在我们回去

先回到master !!!

R@R MINGW64 ~/gitlearn (fix-B)
$ git checkout master
Switched to branch 'master'

R@R MINGW64 ~/gitlearn (master)
$ git reset --hard e1e5b99
HEAD is now at e1e5b99 Merge branch 'feature-A'

这时我们查看一下README.md是否回到了feature-A与master合并后的状态
回到之前的状态

合并fix-B

合并fix-B

R@R MINGW64 ~/gitlearn (master)
$ git merge --no-ff fix-B
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

&emps;&emps;&emps;&emps;这时,系统告诉我们 README.md 文件发生了冲突(Conflict)。系统在合并 README.md 文件时,feature-A 分支更改的部分与本次想要合并的 fix-B 分支更改的部分发生了冲突。不解决冲突就无法完成合并,所以我们打开 README.md 文件,解决这个冲突。

查看冲突部分并将其解决

查看冲突
======== 以上的部分是当前 HEAD 的内容,以下的部分是要合并的 fix-B 分支中的内容。我们在编辑器中将其改成想要的样子
解决好的样子
&emps;&emps;&emps;&emps;如上所示,本次修正让 feature-A 与 fix-B 的内容并存于文件之中。但是在实际的软件开发中,往往需要删除其中之一,所以各位在处理冲突时,务必要仔细分析冲突部分的内容后再行修改。

提交解决后的结果

R@R MINGW64 ~/gitlearn (master|MERGING)
$ sublime README.md

R@R MINGW64 ~/gitlearn (master|MERGING)
$ git add README.md

R@R MINGW64 ~/gitlearn (master|MERGING)
$ git commit -m "fix conflict"
[master a0ff067] fix conflict

修改提交信息

要修改上一条提交信息,可以使用 git commit --amend命令

R@R MINGW64 ~/gitlearn (master)
$ git commit --amend
hint: Waiting for your editor to close the file...

自动打开编辑器
将其修改为merge branch ‘fix-B’

R@R MINGW64 ~/gitlearn (master)
$ git commit --amend
[master 8bce967] merge branch 'fix-B'
 Date: Tue Oct 25 21:08:44 2022 +0800

使用git log --graph查看一下现在的分支情况

R@R MINGW64 ~/gitlearn (master)
$ git log --graph
*   commit 8bce9671a0f731b93c79d953e3152b58f98de379 (HEAD -> master)
|\  Merge: e1e5b99 555b9ec
| | Author: RR <xxxxxxxx2@qq.com>
| | Date:   Tue Oct 25 21:08:44 2022 +0800
| |
| |     merge branch 'fix-B'
| |
| * commit 555b9ec58987a460414e4fd3b164f3fcfba1263c (fix-B)
| | Author: RR <xxxxxxxx@qq.com>
| | Date:   Tue Oct 25 20:53:38 2022 +0800
| |
| |     fix-B
| |
* |   commit e1e5b99846f148f04f0cc87a0a75bbf442937f3f
|\ \  Merge: 0bffe81 6c64c8c
| |/  Author: RR <xxxxxxxx@qq.com>
|/|   Date:   Mon Oct 24 20:01:18 2022 +0800
| |
| |       Merge branch 'feature-A'
| |
| * commit 6c64c8c35152e33e478a24fed2e3851ffb7d6577 (feature-A)
|/  Author: RR <xxxxxxxx@qq.com>
|   Date:   Mon Oct 24 19:37:37 2022 +0800
|
|       Add -feature-A
|
* commit 0bffe81fd4a24b84f11b05515962211229b65ae1
| Author: RR <xxxxxxxx@qq.com>
| Date:   Mon Oct 24 10:41:15 2022 +0800
|
|     add a title to README.md
|
* commit d07f69bc0e3f3d4268bd377f9585e80718756c62
  Author: RR <xxxxxxxx@qq.com>
  Date:   Sat Oct 22 18:15:55 2022 +0800

      my first commit

下次见!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git学习记录4-----更改提交操作 的相关文章

  • 将 git dcommits 切换到 svn 分支

    I had master dcommit到 和rebase来自 颠覆trunk 我创建了一个中间 Subversion 分支tc 合并来自 2 个不同分支的更改 使用 git branch master git svn branch tc
  • libgit2 返回:Refspec 'refs/heads/origin/HEAD' 在 TortoiseGit 中未找到错误

    启动 TortoiseGit 时出现此错误 无法获取所有参考文献 libgit2 返回 未找到 Refspec refs heads origin HEAD 虽然很烦人 但这并不妨碍我使用 TortoiseGit 然而 我想让它消失 因为它
  • 如何分叉一个已经分叉了上游的仓库?

    我想分叉 namecoin namecoin 但我已经分叉了比特币 比特币 后者是前者的上游父级 叉链是 比特币 比特币 gt vinced namecoin gt namecoin namecoin 当我分叉 namecoin namec
  • 在单独的终端屏幕上显示 git diff 和 git log 输出

    设置新的开发环境后 我遇到了一个奇怪的 git 行为 我不记得过去见过 我习惯于git diff and git log在终端中创建一个新屏幕并在其中显示其输出 什么less默认情况下 我用它作为我的寻呼机 然后我可以退出并返回到之前的终端
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是
  • 禁止 Gerrit 推送到 refs/for/master

    我已经更新了所有项目昨天获得访问权限 人们说他们今天早上无法将更改推送到存储库 当我恢复访问权限后 他们仍然无法将更改推送到存储库 只能clone工作正常 在将更改推送到远程存储库时 它表示 remote rejected HEAD gt
  • Gitolite 与 LDAP 不工作

    我是 gitolite 的新手 我正在尝试用 gitolite 进行一个非常简单的测试 我已经设置了名为 test repo 的存储库 请注意 除了下面所述之外 我没有修改任何其他内容 我可以在 gitweb 中看到这个仓库 这是仓库配置
  • 具有私有 git 存储库的 Cocoapods

    我想添加到podfile私有git存储库 例如 pod MyLibrary git gt email protected cdn cgi l email protection perfect top library git branch g
  • 使用 Git 部署时压缩 JS/CSS 文件

    我对 git 有点陌生 另外 这是我第一个自动化部署过程的项目 到目前为止 能够做到这一点真是太幸福了git push dev并上传文件 复制配置文件等 现在 当我推送到我的开发服务器时 我想缩小 JS CSS 文件 我正在考虑在服务器上安
  • 无法从 Git 扩展向 GitHub 进行身份验证?

    我只是在 Visual Studio 2010 中设置 Git 扩展 但无法真正使其工作 我无法进行身份验证 在 Git Extensions 中 如果我选择 Plugins gt GitHub 我可以添加用户 密码 API 令牌并选择 S
  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • 目标路径已存在且不是空目录

    我克隆了一个 git 存储库 但不小心弄乱了 所以我重新克隆并显示消息 目标路径已存在且不是空目录 我尝试过删除 Mac 中带有目标路径名称的文件夹 但没有成功 我对编码非常陌生 因此我们将不胜感激 对于根文件夹 以及任何其他文件夹 对于那
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu
  • 如何使用 PyGithub 创建新存储库

    如何使用 PyGithub 在 Github 上创建新的存储库 我特别想知道如何使用create repo http jacquev6 net PyGithub v1 github objects AuthenticatedUser htm
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • Git 身份验证 - 以新用户身份拉取

    以下命令集可以正常工作 mkdir carboncake cd carboncake git init git remote add origin email protected cdn cgi l email protection rep
  • 如何将 git-svn 与 svn+ssh url 一起使用

    我喜欢在cygwin中使用git svn clone使用我们公司 svn 存储库的命令 这个的网址是svn ssh svn
  • git filter-repo:它可以在特定分支上使用吗?

    我正在读什么git filter repo可以做 因为我想用它做一个小实验 我有这个存储库 我只想从中获取一个目录的历史记录 比如说 master 但我不想为主人工作 我想创建一个新分支 例如filter repo test然后让git f
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • 从 Eclipse 的历史视图中删除 ORIG_HEAD 和 FETCH_HEAD

    我最近开始使用 Eclipse Kepler 和 EGit 插件 这些分支不是我习惯的 有没有办法永久阻止这些分支的创建 我尝试手动删除它们 但它不起作用 并且我不想在下次获取或变基时保留它们 据我从对您问题的评论中了解到 您只希望这些参考

随机推荐

  • 服务器怎么设置无线网络共享,无线路由器怎么设置usb网络共享管理

    众所周知 路由器长久以来一直是计算机网络的核心设备 其重要性不可低估 那么你知道无线路由器怎么设置usb网络共享管理吗 下面是学习啦小编整理的一些关于无线路由器设置usb网络共享管理的相关资料 供你参考 无线路由器设置usb网络共享管理的方
  • 实现一个简单的二叉树

    实现一个简单的二叉树 语言 Objective C 整体上还是挺简单的 所以就直接上代码了 1 二叉树 由 节点 和 枝干 组成 且每个节点最多只有两个子节点的树形数据结构 2 代码实现 2 1 节点类 创建一个简单的节点类 这个类可以保存
  • Chatopera王海良:大厂螺丝钉还是开源极客?年轻技术人如何选择?

    他因为追求创新毅然放弃了大厂稳定的工作 参与开源并成立了开源商业公司 他相信 开源可以极大地助力开发者成长 那么 对于年轻开发者而言 如何通过参与开源实现跳跃式发展 本期 开源访谈录 邀请到了Chatopera CEO王海良来分享他的见解
  • 手把手教会你用Python爬虫爬取网页数据!!

    其实在当今社会 网络上充斥着大量有用的数据 我们只需要耐心的观察 再加上一些技术手段 就可以获取到大量的有价值数据 这里的 技术手段 就是网络爬虫 今天就给大家分享一篇爬虫基础知识和入门教程 什么是爬虫 爬虫就是自动获取网页内容的程序 例如
  • IAR编译错误

    1 错误提示 Error e104 Failed to fit all segments into specified ranges Problem discovered in segment XDATA N Unable to place
  • Linux命令·cp

    cp命令用来复制文件或者目录 是Linux系统中最常用的命令之一 一般情况下 shell会设置一个别名 在命令行下复制文件时 如果目标文件已经存在 就会询问是否覆盖 不管你是否使用 i参数 但是如果是在shell脚本中执行cp时 没有 i参
  • 机器学习中最基本的概念之一:数据集、样本、特征和标签

    本文重点 数据集 样本 特征和标签是机器学习中的重要概念 这些概念在机器学习算法的设计和实现过程中起着至关重要的作用 在本文中 我们将对这些概念进行详细的讲解 以便更好地理解机器学习算法的基本原理和应用 一 数据集 数据集是机器学习中最基本
  • python3 requests https 请求 报 SSLContext 相关递归错误

    一 错误信息 2019 11 19 15 14 40 Provider before requests post 2019 11 19 15 14 41 error infoTraceback most recent call last F
  • iOS开发捷径学习(一)

    结合 iOS开发捷径学习 这本书 分几章系统梳理Interface Builder相关知识 整体现状 iOS界面的开发 主要是采用纯代码和Interface Builder来进行 苹果开发初期面临很少的可用内存 纯代码进行UI的绘制自己控制
  • wordpress开启子目录多站点模式并给子站绑定独立域名

    wordpress开启子目录多站点模式并 wordpress开启多站点模式 多站点模式即是使用一套wordpress程序就可以搭建多个独立 互不干扰的wordpress站点 各站点之间的用户 文章 附件等都互不干预 wordpress的多站
  • 论文阅读-DFN: Dynamic Filter Networks-动态卷积网络

    一 论文信息 论文名称 Dynamic Filter Networks 作者团队 NIPS2016 二 动机与创新 卷积层是通过将上一层的特征映射与一组过滤器进行卷积计算输出特征映射 滤波器是卷积层的唯一参数 通常用反向传播算法在训练中学习
  • 天地图专题二:在天地图上循环显示标注点以及悬停显示信息窗口

    上一文章讲了如何加载天地图 其实是很简单的 只要看一下天地图官方的代码示例就能搞出来 只是为了保持文章系列的完整性 所以才写了出来 官方api http api tianditu com api new webIndex html 这一文章
  • 我的笔记本电脑键盘左ctrl键和fn键功能互换了

    进入BIOS设置 Device Option中将Swap Fn Ctrl Key的属性设为Disabled
  • 轻量级域名解析服务器之dnsmasq

    1 dnsmasq的简介 dnsmasq提供DNS缓存和DHCP服务功能 作为域名解析服务器 DNS dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度 作为DHCP服务器 dnsmasq可以用于为局域网电脑分配内网ip地址
  • Python基础3.3--for循环

    首先来说下for循环 for循环是python语言的循环控制语句 for循环可以遍历任何序列的项目 包括序列集合或可迭代对象 如列表 字符串 元组 字典等 看下基本语法 for 变量 in 序列 变量为任意值 序列为列表 元组 字符串等 子
  • Go For Web:一篇文章带你用 Go 搭建一个最简单的 Web 服务、了解 Golang 运行 web 的原理

    前言 本文作为解决如何通过 Golang 来编写 Web 应用这个问题的前瞻 对 Golang 中的 Web 基础部分进行一个简单的介绍 目前 Go 拥有成熟的 Http 处理包 所以我们去编写一个做任何事情的动态 Web 程序应该是很轻松
  • Java中的float浮点数的二进制存储及运算

    float在内存中的数据格式及其转byte数组原理及转换过程 float在计算机的存储 四个字节 共有32位 以 符号 移位数 底数 的方式存储 三者的计算 第一位是符号 往后8位是 移位数 再往后23位是 底数 32位的格式排列就是 AB
  • SpringBoot使用 @Async实现优雅的异步调用

    点击关注 Java基基 2022 04 09 11 50 收录于话题 Java基基908个 点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 每天 14 00 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 20
  • SQL2000 函数递归显示路径

    Author htl258 Tony Date 2011 05 19 17 25 59 Version Microsoft SQL Server 2008 RTM 10 0 1600 22 Intel X86 Jul 9 2008 14 4
  • git学习记录4-----更改提交操作

    git学习记录4 更改提交操作 回溯历史版本 回溯到feature A之前 创建fix B 推进至feature A后的状态 合并fix B 查看冲突部分并将其解决 提交解决后的结果 修改提交信息 下次见 回溯历史版本 回溯到feature