一些常用的 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 进阶知识与技巧 2

这时还需要在该目录下创建一个 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 进阶知识与技巧 4

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

如果想把修改后的记录同步到远程仓库,这时只要执行 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年6月6日 上午1:46
下一篇 2023年6月6日 上午1:50

相关推荐

  • 手机视频剪辑教程自学( 如何自学手机视频剪辑)

    在现在这个短视频时代,视频已经代替了图片成为了我们记录生活的方式,因为视频更加形象生动。但是,对于一些不会剪辑视频,或者不会制作炫酷视频的新手来说。视频制作起来,太难了。其实,在现在,早就有很多人想到了这点,直接用手机操作,就可以轻松剪辑/编辑视频。 ​ 打开清爽视频编辑器,既可对视频进行剪辑。 1:片段编辑 进入应用的【首页】,只点击【视频编辑】,再导入视…

    2023年6月6日 上午1:47
    25
  • 互联网创业要注意什么?(十个网上创业知识点)

    在大环境不太好的的情况下,如何通过互联网实现创业赚钱?对于这个问题我们从不同角度会找到不同的答案。这期分享一篇关于怎么通过互联网创业赚钱的指南,看看这篇来自微信公众号姜辉的创业笔记,分享的关于互联网创业文章介绍。   网上跟你讲道理的人很多,带你赚钱的人很少。 一、互联网是一个创造奇迹的地方   很多人普通人通过做自媒体、短视频、直播带货、私域成交,一年赚到…

    2023年6月6日 上午1:47
    25
  • 自从使用了Cursor工作效率飞起

    官网:www.cursor.so/ 看官网接受大家应该就知道是什么东西了,他是一个开源的AI编程编辑器。开源地址github.com/getcursor/c… 目前在国内是可以不需要其他东西,可以之间访问的。而且目前免费使用。支持多种语言。 下面是官方的介绍: Cursor是一个为Al编程而做的编辑器。它还处于早期阶段,但现在Cursor可以帮助你做一些事情…

    2023年6月6日 上午1:47
    25
  • cad教程入门基础免费(cad入门基础知识教程)

    CAD入门这个范围实在是太广了,如果简单理解为,掌握大部分绘图、修改命令的用法,这个倒是可以考虑去整理。 那今天,我们就一点点,从最简单的命令开始学起。 1、直线命令,快捷键L 执行命令后鼠标左键确定起点,再次点击鼠标左键确定终点。 注意:确定起点后,命令行提示了另外两种方式确定终点,角度A和长度L,就是说你可以通过输入A利用指定角度画出你要的直线,或者长度…

    2023年6月6日 上午1:47
    25
  • 我说MySQL每张表最好不超过2000万数据,面试官让我回去等通知?

    事情是这样的 下面是我朋友的面试记录: 面试官:讲一下你实习做了什么。 朋友:我在实习期间做了一个存储用户操作记录的功能,主要是从MQ获取上游服务发送过来的用户操作信息,然后把这些信息存到MySQL里面,提供给数仓的同事使用。 朋友:由于数据量比较大,每天大概有四五千多万条,所以我还给它做了分表的操作。每天定时生成3张表,然后将数据取模分别存到这三张表里,防…

    2023年6月6日 上午1:47
    25
  • 转笔教程 新手 简单(转笔教程 新手 简单 无限循环普通笔)

    学生党都接触过的一个炫酷的东西-转笔 学生时期相信不少同学都会把手中的笔转动起来,这是因为人在思考的时候转动笔能更好地发挥,俗称手指灵活iQ更高 那么学生时期,同学们接触的转笔都是同一样的吗?其实并不是一样的,通过不断地发展和更新已经有很大的改变了,现在转笔也要专业化了,转笔现在也有专业去做练习的道具了,比如图中的转笔道具就是两端平衡的转笔,这样的专业转笔可…

    2023年6月6日 上午1:47
    25
  • 笔记本电脑怎么截图快捷键(笔记本电脑怎么截图快捷键win10)

    Windows 10系统是目前最主流的Windows操作,也是全球市场份额最高的一款PC端桌面操作系统。今天,小雨为大家介绍Win10系统中最实用的6种截图方法,不但包含常用的快捷键截图法,而且可以自由截取任意形状的区域,非常方便实用。 熟练掌握这6种方法,就再也不用依靠微信和QQ等其它第三方应用软件来截图了。 方法1、快捷键PrintScreen 这个快捷…

    2023年6月6日 上午1:47
    25
  • 3dmax教程室内设计教程(3dmax室内设计自学教程)

    打开3DMax-自定义-设制单位 建一长方体-根据房间大小定尺寸 打开修改面版-反转法线 转换多边形 在边级别,选上下边点连接,分段2 再选左右的边-连接-分段1 转到点级别,框选点用移动工具进行调节 选 面删掉 选四边在左视图按SHIFT键,用移动工具拉出. 在边级别下进行切边,打开捕捉开关钩选 在前视图,调节,偏移摸式中输入100回车 选择物体下,切片 …

    2023年6月6日 上午1:47
    25
  • 凉拌黄瓜的做法简单又好吃(凉拌黄瓜的简单做法)

    夏季胃口不好,如果能做一道爽口的凉拌菜,无论是吃米饭、喝粥、吃面条,都是妥妥的开胃下饭菜~ By *长腿_河马太太* 用料 黄瓜 2根 盐 1勺 醋 1勺 生抽 2勺 白糖 2勺 蒜 5瓣 姜 少许 红剁椒 1勺 干辣椒 3个 花椒 1克 做法步骤 1、1⃣️、黄瓜切成段,放白糖1勺、盐1勺腌制1小时,等黄瓜出水以后倒掉水,再用清水冲洗干净 2、2⃣️、冲洗…

    2023年6月6日 上午1:47
    25
  • 手机推特注册教程(安卓手机如何使用推特)

    首先来简单介绍一下Twitter(非官方承认的国内惯称:推特)。 Twitter是一家美国社交网络(Social Network Service)及微博客服务的网站。 这个微博客服务最开始是由杰克·多西等人在2006年3月创办出来,并在当年7月启动的。 属于一种微博客的典型应用。 它可以让用户更新不超过140个字符的消息,这些消息也被称作“推文(Tweet)…

    2023年6月6日 上午1:47
    25