发布于 2026-01-05 1 阅读
0

使用 Git 修复基本错误

使用 Git 修复基本错误

版本控制系统的主要优势之一是能够无所畏惧地编写代码,并能够从错误中恢复。

好吉特

然而,这并非 Git 入门知识。开发人员常常会因为提交或合并错误而陷入困境。让我们来看看一些实用技巧,以便轻松解决一些常见问题。

注意:我不会使用高级示例,而是专注于各个级别的开发人员都能轻松理解的步骤。

我们先来做一个简单的热身:

更改最后一次提交消息

您在上次提交信息中出现了拼写错误,或者您想改进提交信息使其更具描述性。一种常见(但错误)的做法是使用类似“初始提交”这样的临时提交信息,但当您完成实际开发工作后,您不希望提交历史记录看起来很糟糕。

git commit --amend
Enter fullscreen mode Exit fullscreen mode

默认情况下,`--amend` 会将所有暂存的更改应用到之前的提交,并打开一个编辑器,您可以在其中编辑提交消息。 更改消息 -> 保存并关闭文件 -> 更改会被 Git 捕获,并执行提交修改。您将看到如下所示的输出,其中显示了提交的新状态。
编辑提交

[main 1a7b82d] Adding jsons
 Date: Sat Jun 19 11:16:19 2021 +0530
 3 files changed, 242 insertions(+)
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 resume.json
Enter fullscreen mode Exit fullscreen mode

更好的方法——直接使用命令行修改消息,而不是使用编辑器。

git commit --amend -m "Adding jsons"
Enter fullscreen mode Exit fullscreen mode

将文件添加到上次提交

你忘记提交一个文件了。通常情况下,再提交一次就能解决这个问题。但是,最好是把这些文件一起提交。这样,如果有人查看某个提交,他们应该能够理解其目的,而不需要为了弄明白而去查找后续的提交。让我们来解决这个问题:

  • 暂存缺失的文件
git add .gitignore
Enter fullscreen mode Exit fullscreen mode
  • 请求 Git 将更改暂存到上次提交。同样,这里使用了 `--amend` 指令。
git commit --amend
Enter fullscreen mode Exit fullscreen mode

再次打开编辑器,但现在您还会看到新文件已添加到您的提交中。
编辑器和新文件

或者,如果您不想更改提交消息,则应使用 `git commit --amend --no-edit--commit`。它不会打开编辑器,因为它不期望提交消息发生更改。它会立即应用更改并输出最后一次提交。

git commit --amend --no-edit
[main 65f3784] Adding jsons
 Date: Sat Jun 19 11:16:19 2021 +0530
 5 files changed, 246 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 resume.json
 create mode 100644 test.txt
Enter fullscreen mode Exit fullscreen mode

使用 Shift 键删除文件

您从设备中删除了仓库中的一个文件。在这种情况下,Git 可以从历史记录中恢复丢失的文件。
假设我删除了文件 test.txt,我只需要……

git checkout -- test.txt
Enter fullscreen mode Exit fullscreen mode

这将从您的仓库中恢复 test.txt 的最后一个提交版本。

重要提示:仅返回文件的最后一个提交版本 - 删除前所做的任何本地更改都将丢失,任何未版本化的文件都无法恢复。

现在语法有点奇怪,因为 `--` 没有带选项。但这只是一个变通方法,以便 git 可以区分分支名称和文件名(对于分支,您应该使用 `.git` git checkout branch-name)。

:还有其他一些可以使用命令恢复文件的情况,revertreset我会单独介绍。我认为这些情况并非基本场景。

提交到了错误的分支

MIB 神经分析仪
在快节奏的开发环境中,忘记切换到新分支是很常见的。如果你把更改提交到了错误的分支,解决这个问题也很容易:

  • 从当前状态创建新分支。
git branch new-correct-branch 
Enter fullscreen mode Exit fullscreen mode

这将创建一个新分支,其中已经包含了提交信息。

  • 将错误分支重置为之前的正确提交。
git reset --hard HEAD~
Enter fullscreen mode Exit fullscreen mode

这样做有两个目的:

  1. 将分支的 HEAD 移动到最新的 1 次提交。
  2. 清除当前错误分支中自 latest-1 提交之后所做的所有更改。

注意:使用时务必小心,不要丢失任何本地更改--hard。如果在错误的提交之后还有其他更改,请确保先将其暂存。

  • 切换到新的正确分支
git checkout new-correct-branch
Enter fullscreen mode Exit fullscreen mode

新分支已经包含了所需的提交。您可以继续在该分支上进行开发并推送更改。

删除已推送的提交

假设你交付了一小段代码,但它在质量保证测试中失败或引入了回归问题。现在你被要求紧急从发布分支中移除这段代码,以免影响发布。
后悔

我们来看看你可以如何着手处理:

  • 切换到需要进行更正的分支。
  • 找到要回滚的提交。可以使用git logGitHub Desktop 或浏览器等用户界面工具。找到提交 ID。例如,git log它会返回以下提交:
A -> B -> C -> D -> E 
Enter fullscreen mode Exit fullscreen mode

假设 C 是目标提交。保存 C 的哈希值。假设为 1df455v631fca。

  • 撤销提交
git revert 1df455v631fca -m "Reverting commit"
Enter fullscreen mode Exit fullscreen mode

这将移除 C 对当前分支所做的更改。

重要提示- 此操作不会从历史记录中删除您的提交。它只会添加另一个提交来撤销这些更改。为了便于理解,新的历史记录如下所示:

A -> B -> C -> D -> E -> -C
Enter fullscreen mode Exit fullscreen mode

希望这些步骤能帮助你更好地使用 Git。我之后会带来一些更深入的 Git 相关主题。如果你想了解这些命令的更多用例,可以看看这篇 Atlassian 教程。


您可以在LinkedIn和Twitter(@abh1navv)上找到更多关于我的信息。  

文章来源:https://dev.to/abh1navv/fixing-basic-mistakes-with-git-4m4l