一些常用的 Git 进阶知识与技巧

1. 同一电脑存在多个 Git 账号

假设我们在同一电脑上拥有多个 Git 账号,例如公司内部使用的是 Gitlab,个人使用的是 Github 或者 Gitee。那就会遇到一种情况,上班时想给个人开源项目提交代码,但是 Git 绑定的是公司的账号。

在这种情况下,我们可以让 Git 绑定多个不同的 ssh key,每个 ssh key 对应一个不同的 Git 服务器。

生成第一个 ssh key:

生成第二个 ssh key:

参数 -f 表示指定生成的文件名, path/to/file 是文件名路径,例如 ~/.ssh/id_rsa_github

执行上面两条命令后会得到两对 ssh key。

一些常用的 Git 进阶知识与技巧

这时还需要在该目录下创建一个 config 文件。写上以下内容:

这个配置文件的作用是指定私钥文件位置。

然后我们可以把第一个密钥配置到公司的 Gitlab 服务器,并把相应的 Git 账号和邮箱设成全局。

然后把另一对 ssh key 配置到 Github 上,并在电脑上的 Github 项目里单独配置 Git 用户姓名和邮箱。

至此,我们就大功告成了。可以同时在不同的 Gitlab 和 Github 项目上提交代码了。

2. 修改 git commit 记录的用户姓名和邮箱

假设电脑上同时存在 Gitlab 和 Github 项目,其中 Gitlab 用户信息已经全局配置过了。现在新拉了一个 Github 项目,提交了一个 commit 并且已经推送到了远程仓库。这时发现该项目未配置 Github 的用户信息,默认使用的是全局账号 Gitlab 的用户信息。

我们可以通过以下命令来修改最近一次提交的用户信息:

username 是用户名,用户邮箱旁边的 <> 符号不能去掉。修改后再执行 git push -f 推送到远程仓库。

如果要修改多个 commit 的用户信息怎么办? 可以通过以下的代码来修改:

将上述代码中的用户名和邮箱修改后,保存为 .sh 格式的文件,例如 edit.sh。然后在项目根目录下执行 sh edit.sh(windows 下可右击-> Git Bash Here -> sh edit.sh),再执行 git push -f 强推即可。

3. 修改某个历史记录的消息

假设当前分支有 a b c d 四个 commit 记录:

如果你想对 c 记录的消息进行修改。可以使用 git rebase 将 c 记录换到最前面,然后使用 git commit --amend 对其消息进行修改。

具体操作步骤

执行以下命令对记录 d 前面的三个 commit 进行编辑:

进行 vim 编辑界面后,移动光标到 c 记录上,按下 dd 剪切该记录,然后移动光标到第一行,按下 p 粘贴,再输入 :wq 保存。

执行 git commit --amend 对切换顺序后的 c 记录进行修改。进入 vim 编辑界面后,按 i 进行修改,然后按 ESC,再输入 :wq 保存。

最后用前面讲过的 git rebase 操作将 c 记录恢复到原来的位置。

一些常用的 Git 进阶知识与技巧

这个过程的执行结果就和上图一样,这是当前分支修改后和远程分支上的对比,箭头指向的记录消息就是修改后的消息。

如果想把修改后的记录同步到远程仓库,这时只要执行 git push -f 就可以了。

第二种方式

  1. 使用 git checkout -b <branchName> c 从指定记录切出一个分支
  2. 在新分支使用 git commit --amend 修改提交消息
  3. 使用 git cherry-pick 将 b a 记录,追加到新分支(注意,这里的 b a 提交记录是指原分支上的 commit,也就是选取原分支上的 b a 记录添加到新分支上,这样新分支上的记录就变成了 a b c,并且 c 记录的提交消息在第二步已经修改过)
  4. 使用 git checout 原分支名 切换回原来的分支,再执行 git rebase <branchName> 合并新分支,最后强推到远程分支

4. 挑选指定的 commit 进行合并

假设你切了一个 bugFix 分支来修复线上 bug,经过一段时间的努力后终于将 bug 修复了。但是为了调试(加了很多 debug 代码)或其他原因,bugFix 上多了很多无用的记录消息。

例如上面的三个记录,前面的两个记录添加了很多调试代码,在最后一个记录终于修复了 bug,并且删除了调试代码。这时如果直接将 bugFix 分支合到 master 分支,就会把调试的记录也合并进来。

这时可以使用 git cherry-pick 只将最后一个记录合并到 master 分支。或者使用 git rebase 将 bugFix 分支另外两个记录抛弃,然后再合并。

5. ^ 和 ~ 的区别

操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。 ~ 表示向上返回几代记录。

但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的第几个父记录。

Git 默认选择合并提交的“第一个”父记录,在操作符 ^ 后跟一个数字可以改变这一默认行为。

单看文字可能不太好理解,下面看几个示例。

执行命令 git checkout main^ 回到第一个父记录(原来 HEAD 指向 c3,现在指向 c1)。

执行命令 git checkout main^2 回到第二个父记录(原来 HEAD 指向 c3,现在指向 c2)。

最后再来一个更复杂的示例:

通过这些示例我们还能发现 ~n 等于连续的 n 个 ^

6. git revert 与 git reset 的区别

git reset 可以回退 Git 的历史记录。例如当前分支有三个记录,并且 HEAD 指向 c 记录:

如果我们想回退到 b 记录,只要执行 git reset b 就可以了:

接着使用 git push -f 将回退版本后的分支强制推送到远程仓库,这样本地分支和远程分支就同步了。

git revert 也可以撤销记录,只不过它撤销的记录不会消失,这一点和 git reset 不一样。git reset 撤销的记录就跟消失了一样。

现在我们用 git revert 来重新演示下刚才的操作:

如果我们执行 git revert b,则会在当前分支上再生成一个新的 commit 记录,变成 a b c b',这个 b' 的状态和记录 b 是一样的。

也就是说,执行 git reset b 后,当前的分支记录会变成 a b。执行 git revert b 后,当前的分支记录会变成 a b c b'

如果你想让别人知道你撤销过记录,就使用 git revert,因为它会留下撤销的记录,否则用 git reset

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。商机网仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.315965.com/n/53106.html 聚才发 母婴好物

(0)
上一篇 2023年12月15日 上午7:04
下一篇 2023年12月15日 上午7:14

相关推荐

  • 毛衣编织教程完整版(毛衣编织教程完整版图解)

    秋 露 』 用线:羊毛兔毛混纺2股 用量:270 克 用针:3.25mm、3.5mm、4mm 尺寸:胸围110cm,衣长57cm,领口到袖口60cm,腋下袖长32cm 作品秀: 毛线具体多少支,记不得了,是囤了10年以上的线,当时买了这个浅桃红,还买了白色和天蓝色,去年用白色3股织了《紫芊》,用量也是很省。还是比较柔软的,虽然含了兔毛,但是也不掉毛,可能还是…

    2023年8月1日
    412
  • 手机贴膜教程钢化膜(手机贴膜教程最详细)

    以华为P30pro为例 (贴膜前请关好门窗,确保贴膜环境干净整洁,无灰尘和毛絮干扰) 温馨提示:请一定要在光线充足的环境下进行贴膜操作,以确保看清细节部位。 步骤一:清洁手📱机屏幕 取出酒精湿巾,清洁手📱机屏幕上的污渍。然后再用无尘布把水渍擦拭干净。 步骤二:安装贴膜神器(如无神器可略过) 温馨提示:土真V:lwq520hfj送钢化膜贴膜神器上有字母一端务必…

    2023年7月30日
    347
  • excel表格制作教程入门(excel表格制作教程入门培训)

    打开EXCEL首先是绘制表格,这里就需要你提前想好你需要填写哪些内容,一个内容一个格子。 桌面点击鼠标右键-新建-xls或者xlsx都行 然后可以把鼠标放到新建的表格上边右键-重命名,可以给你的表格取一个适合内容的名称 打开表格(如下图):填入需要做的内容,点击鼠标左键选中内容点击表格选择需要的线框,也可以先点其他边框绘制一个你需要的表格再去填写内容。 接下…

    2023年8月2日
    325
  • cdr教程入门基础知识(cdr入门图文自学教程)

    对于很多跨入设计行业的新手来说,CorelDRAW也是必备技能之一,它是一款专门用于矢量绘图软件,很多设计师们应该都有耳闻或者正在使用。今天小编使用CorelDRAW 2019 for Win 版本来讲解基础内容,认真学习你也能成为一名不错的设计师。 一、CorelDRAW 2019软件介绍 图1:CorelDRAW 2019初始页面 打开CDR软件,首先出…

    2023年7月30日
    356
  • 取代C++!微软改用Rust语言重写Win11内核:简洁安全、性能更佳

    快科技4月29日讯,随着微软确定结束对Win10的功能更新,其更多精力将转移到Win11以及“Win12”上。 在日前举办的BlueHat IL 2023 大会上,微软企业和操作系统安全副总裁David Weston介绍了他们正对Win11进行的内核级改造。 简单来说,微软正用Rust取代C++改写内核,目前已经添加了36000行代码。 Weston指出,R…

    2023年12月24日
    274
  • 黑苹果安装教程2024(黑苹果安装教程详细)

    黑苹果安装步骤 上一篇内容我们讲到了安装黑苹果前的所有准备步骤,正式安装的时候插入提前制作好的 U盘 电脑开机之后连续按 F12 键,在启动项的页面我们选择 U盘 启动。 选择 U盘 引导启动之后回车执行,来到如下图显示的引导界面之后我们选择苹果图标并回车进入。 在进入到如上图的界面之后需要一段时间的等待,而这里也是最容易出问题的地方,就是我们常说的卡代码。…

    2023年7月30日
    490
  • 画画教程动漫人物基础(画画教程动漫人物基础入门)

    卡通动画是伴随着每个人的童年,不同年龄阶层的人都有属于自己的卡通回忆,不过有些动画是经典的,也许爸爸妈妈那个年代的动画片,到了10后小宝宝这里还是很热门。今天果果就来教大家花5个动画人物简笔画,非常详细,1分钟速成,零基础都能学会! 皮卡丘 1、首先用线条勾勒出皮卡丘的脸颊。 2、在头部两侧画出皮卡丘长长的耳朵。 3、画出大大的眼睛,留出高光部分。 4、画出…

    2023年7月30日
    334
  • OPPO 大数据诊断平台“罗盘”正式开源

    一、背景 OPPO 大数据目前有 20+个服务组件,数据量超 1EB,离线任务数近百万,实时任务数千,数据开发分析师超千人。这也带来了系统复杂度的问题,一方面是用户经常对自己的任务运行状况“摸不着头脑”,不管是性能问题,还是参数配置问题,甚至是一些常见的权限报错问题,都需要咨询给出具体的解决方案;另一方面是面对各类繁杂任务,运维人员经常需要对任务故障定位和排…

    2023年12月17日
    219
  • 让我们看看jQuery 3.0有什么新玩意

    作为迄今为止最流行的 JavaScript 库,jQuery 为无数的 Web 开发者带来了福利。 jQuery 从 2006 年诞生至今,已经被许许多多的 Web 开发者运用在项目中,极大地方便了开发。 时间回到 2015 年 7 月, jQuery 3.0 发布了第一个测试版———这是长久以来的一次重要发布。让我们一起来看看 jQuery 中有什么新的东…

    2023年12月15日
    190
  • word教程零基础教程(新手如何使用word文档)

    Hi!今天专门出一期,零基础也能快速掌握的“word”使用晓技巧,即便你已经是word“老司机”也推荐你一同往下看看哦! 虽然这些功能没有“花里胡哨”的复杂操作,但重实用性上看,妥妥是许多人日常需要用到的! (PS:结尾有惊喜哦!) 01、查找与替换 “查找与替换”作为word中有个比较基础的功能,虽然看起来平平无奇,但实际在检查文章,纠正用词,快速处理空格…

    2023年7月30日
    501