如何清理您的Git历史记录

非正式地讨论一些非常有用的git命令

在这里,我将分享我学到的要点,关于git提交历史,良好实践以及如何使用十二个git命令来实现。 我在上个月通过配对编程进行了数百次提交,从而学到了这些东西。

  1. 什么是git历史记录?
  2. 关于提交消息
  3. 一律提交
  4. 更正最后提交消息
  5. 使最后x次提交成为一个
  6. 删除上一次提交的更改
  7. 清理提交历史
  8. 管理阶段
  9. 结论

1.什么是git历史记录?

准确记录所有提交,其中包含文件上的更改,您可以在其中跟踪哪些更改以及更改的时间,或者将当前版本与以前的版本进行比较。 我们在哪里看到它? 在git bash上输入:

git log --oneline

如果提交过多,则可以像在任何文件中一样使用键盘箭头或向上/向下翻页来按提交消息进行导航,以退出类型(q),这是退出的快捷方式。

2.关于提交消息

不要写无意义的消息,它们应该简短明了,以说出您在代码中所做的更改以及它们在哪里生效,例如:

  • 错误:“修复index.html”
  • 良好:“导航栏上的响应能力得到改善”

为了说明我们为什么这样做,请想象您处于一个庞大的项目中,并且有如此多的协作者,甚至您都不知道他们中的大多数是谁。

因此,您可以使用新功能,在计算机中进行测试,然后一切正常。

但是,当您推送所有突然的失败时,那么您要检查的第一件事是在编写新功能的一半时间内所做的更改,并且在git日志中,您收到了很多类似“修复”之类的消息。 ...您会发现跟踪会浪费多少时间?

3.总是提交

用频率提交,完成功能? 提交,改进单个div的样式? 提交等等。 理想的是一次一个文件。

您可能会想,为什么我要提交这么多? 主要原因是您的新功能可能会破坏其他人的代码,反之亦然,但是,如果您始终进行小的更改,则将更易于跟踪和修复,因此通过跟踪数十或数百个代码可以避免浪费大量时间一次提交中更改的行数。

4.更正最后的提交消息

如果您在本地存储库中进行了小写且拼写错误,或者您想更改消息以使其更具描述性,该如何解决? 很简单:

git commit -m “correct message” --amend

请注意,如果以前已经推送到远程存储库,最好不要使用它。

您可以在以下网站上找到有关的更多信息: 官方文档

5.使最后的x提交成为一个

您是否已陷入这种情况? 在对新功能进行提交之后,您意识到需要进行一些小的更改,因此您进行了一些小的更改并再次提交,最后对同一件事进行了5次提交。 这在您的git历史上看起来很难看,现在您要修复,没问题:

git reset HEAD ~ 3

HEAD〜3说从头开始向后3次提交,包括在头上的提交,在本示例中,您最近的3次提交将从日志中删除,但是您对代码的更改将保留在那里,看看现在需要提交哪些代码:

git stage --diff

您将看到从历史记录中删除的所有提交更改都已在舞台上,因此所有这些都可以再次提交,一次即可完成。

请注意,HEAD通常是指您所做的最后一次提交,如果不确定,请检查git log。 如果您的最后一次提交是合并(不常见的情况),在这种情况下,使用HEAD〜1会擦除合并分支中的所有提交,另请参阅文档。

6.删除上一次提交的更改

请注意,这将覆盖所有更改,且不会回滚,通常在您尝试某些操作时会使用,但并没有达到您的预期。 我建议先在玩具存储库上对其进行测试。

git reset –-hard HEAD ~ 1

现在,您的最后一次提交以及所有在代码中所做的更改都将被删除。

7.清理您的提交历史

清理提交历史记录的最有效方法是使用rebase,请注意此处,因为您可以通过键入错误来删除提交。 因此,让我们以交互模式(-i标志)初始化rebase:

git rebase - i HEAD~ 5

进入后,您将看到终端内列出的最后5个提交( HEAD~5 ),并在顶部显示最新的提交(此列表以Vim *打开),并且您会获得一份迷你手册,其中包含一些命令,您可以使用,在大多数情况下,我们想要的是壁球和单词。

用南瓜替换镐,此提交将从日志中删除,并且代码更改将与带有镐的最后一次提交分组。

如果要更改消息,则可以替换为“按单词重新排列”,然后直接更改消息。

现在,您可以进入另一个屏幕,在该屏幕上为壁球提交的一组编写一条提交消息。 要按ESC并键入:

:wq!

冒号( : )是说你想传递一个命令,( w )是写入(保存)的变化,( q )的退出,和( !来执行)。

请注意,每个小组都会收到您的消息。 您可以在git log上检查结果。

* Vim是git附带的默认文本编辑器,可让您在终端内编辑文本文件。

如果由于某种原因您未完成此操作而没有完成此屏幕,则可以随时返回以下内容:

git rebase --edit

如果您想不做任何改动就离开,请按ESC键并在键盘上输入:

:q!

它会告诉Vim,不保存即退出。

8.管理阶段

我们的提交通常应该在单个文件或一组相关文件上。 但是,我们如何在舞台上进行快速更改以做出或提交?

假设您有3个文件,并且仅应提交2个文件,可以执行以下操作:

git add  .

因此,从舞台上删除您不想要的一个:

git reset -- Readme.txt

并检查结果:

git status

从某个扩展名(例如CSS)添加所有文件:

git add  *.css

全部加错了吗? 所以清理舞台:

git reset --

要进行更精细的操作,可以将文件添加到交互模式的舞台上:

git add  -i

首先选择一个选项,方法是输入对应的号码,例如(3)以进行还原。

选择一个选项后,可以一个接一个地传递要从阶段中删除的文件的索引。

完成后,键入(输入)。

要添加文件,请执行相同的过程,但使用选项(4)添加未跟踪的文件。

要退出,请在选项菜单上键入( q )。

9.结论

要记住的主要点是在推送到远程存储库之前,尤其是在合并分支之前,我们必须确保提交历史记录是干净的。 一旦我们推送到远程存储库,很少有人会修复它。

想更多地了解结对编程并成为一名远程软件开发人员? 看看Microverse.org

如果您有任何疑问,建议或想分享您的想法,请在下面的评论中提出,我将尽快答复。

From: https://hackernoon.com/how-to-clean-your-git-history-ryzb3ydv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值