写点什么

软件工程师必备的 10 个 Git 命令(先码住)

  • 2023-11-29
    福建
  • 本文字数:3219 字

    阅读完需:约 11 分钟

软件工程师必备的10个Git命令(先码住)

Git 和 GitHub 是每个软件工程师必须知道的最基本的东西。这些工具是开发人员日常工作的组成部分,因为我们每天都与它们互动。熟练掌握 Git 不仅可以简化你的工作,还可以显著提高工作效率。在这篇博客文章中,我们将探索一组命令,可以大幅提升你的生产效率。随着你对这些命令变得更熟练,你将节省宝贵的时间,并成为一个更有效率的软件工程师。

Git 常用术语

现在,在我们探索 Git 命令之前,让我们熟悉一些基本的 Git 术语。以帮助您更好地理解命令,避免在本博客的后面部分使用这些术语时产生困惑。

HEAD

在 Git 中,HEAD是一个特殊的指针/引用,它总是指向当前分支中的最新提交。当你进行一个新的提交时,HEAD向前移动指向那个新的提交。例如,如果你在main分支上进行了一次新的提交,HEAD现在会指向这个新提交,表明它是main分支中最近的一次提交。

^

Git 中的^符号是浏览项目历史时间轴的一种方式。当你使用HEAD^时,它会引用你当前提交之前的提交。如果你在^后面加上一个数字,比如HEAD^2,它会引用你当前提交之前的第二个提交。简而言之,^符号允许您在项目历史中向后遍历,而数值允许您精确确定希望返回的提交数量。

Staging

Staging是你组装你想包含在下一次提交中的更改的地方。Staging允许你仔细地管理你的提交,使它更容易审查,组织和完善你的修改。通过staging您可以控制提交中包含的内容。要暂存更改可以使用git add命令,这类似于声明:“我希望这些更改成为我下一次提交的一部分。“

现在让我们逐一探索 10 个 Git 命令。


我们开始吧


1.同时添加和提交文件

在 Git 中,我们通常使用git add *命令来暂存所有修改过的文件,以便后续提交。然后我们使用git commit -m "commitMessage"命令提交这些更改。然而有一个更精简的命令可以在一个步骤中完成这两项任务:

git commit -am "commitMessage"
复制代码

-am标志不仅允许我们暂存这些更改,还允许我们在一个有效的操作中提交这些更改。

2.创建并切换到 Git 分支

与前面的场景类似,还有一个命令将这两个命令的功能结合在一起。与使用两个单独的命令(git branch branchName创建一个分支,然后使用git checkout branchName切换到该分支)不同,您可以使用以下命令在一个步骤中完成这两个任务:

git checkout -b branchName
复制代码

使用-b命令的git checkout标志不仅可以创建一个新的分支,还可以立即将您切换到该分支。

3.删除 Git 分支

要在 Git 中删除一个分支,可以使用git branch -dgit branch -D命令。-d选项用于安全删除,仅当分支已完全合并到当前分支中时才删除该分支。-D选项用于强制删除,这将删除分支,而不管它是否完全合并。以下是命令:

安全删除(检查合并):

git branch -d branchName
复制代码

强制删除(不检查合并):

git branch -D branchName
复制代码

4.重命名 Git 分支

要重命名分支,可以使用git branch -m命令,后跟当前分支名称和新的所需分支名称。例如如果你想将一个名为 oldBranch 的分支重命名为 newBranch,你可以运行:

git branch -m oldBranch newBranch
复制代码

如果要重命名当前正在工作的当前分支,而不指定旧名称,则可以使用以下命令:

git branch -m newBranchName
复制代码

在这里您不需要指定旧的分支名称,因为 Git 会假设您想将当前分支重命名为新名称。

5.取消暂存特定文件

有时您可能希望从暂存区域中删除特定文件,以便在提交之前进行其他修改。

git reset filename
复制代码

这将取消暂存该文件,同时保持您的更改不变。

6.放弃对特定文件的更改

如果您想完全放弃对特定文件所做的更改,并将其恢复到上次提交的状态,请使用:

git checkout -- filename
复制代码

此命令可确保文件返回到以前的状态,撤消最近的任何修改。这是一种很有帮助的方法,可以在不影响其他更改的情况下对特定文件重新开始。

7.更新上次 Git 提交

想象一下你刚刚在 Git 仓库中进行了提交,但是后来你意识到你忘记了在那个提交中包含一个修改,或者你想修改提交内容本身。你不想为这个小改动创建一个全新的提交。相反,你想把它添加到前一个提交中。以下就是你可以使用的命令:

git commit --amend -m 'message'
复制代码

此命令修改您最近提交的内容。它将任何阶段性更改(您使用 git add 添加的更改)与您的新注释组合在一起,以创建更新的提交。

需要记住的一点是,如果你已经将提交推送到远程仓库,你需要使用git push --force强制推送更改来更新远程分支。因为一个标准的git push操作会向你的远程仓库追加一个新的提交,而不是修改最后一个提交。

8.存储更改

假设你在两个不同的分支上工作,A 和 B。在分支 A 中进行更改时,您的团队要求您修复分支 B 中的一个 bug。当你尝试使用git checkout B切换到分支 B 时,Git 会阻止它,并显示一个错误:



我们可以按照错误消息的建议提交更改。但承诺更像是一个固定的时间点,而不是一个正在进行的工作。这是我们可以应用错误消息的第二个建议并使用stash特性的地方。我们可以使用这个命令来存储我们的更改:

git stash
复制代码

git stash临时保存您尚未准备好提交的更改,允许您切换分支或处理其他任务,而无需提交未完成的工作。

要在我们的分支中重新应用隐藏的更改,您可以使用git stash applygit stash pop。这两个命令都恢复最新的隐藏更改。Stash 应用只是恢复更改,而 pop 恢复更改并将其从 stash 中删除。

9.恢复 Git 提交

假设你正在处理一个 Git 项目,你发现一个特定的提交引入了一些不希望的更改。您需要在不从历史记录中删除提交的情况下撤销这些更改。您可以使用以下命令来撤消该特定提交:

git revert commitHash
复制代码

这是一种安全且非破坏性的方式来纠正项目中的错误或不必要的更改。

例如你有一系列的提交:

  • Commit A

  • Commit B (此处引入了不需要的更改)

  • Commit C

  • Commit D

要反转 Commit B 的效果,可以运行:

git revert commitHashOfB
复制代码

Git 将创建一个新的提交,我们称之为Commit E,它否定了Commit B引入的更改。提交 E 成为分支中的最新提交,项目现在反映了如果提交 B 从未发生过的状态。

如果你想知道如何检索一个提交哈希,使用git reflog很简单。在下面的屏幕截图中,突出显示的部分表示您可以轻松复制的提交哈希:



10.重置 Git 提交

让我们假设您已经提交了一个项目。然而在检查后,您意识到需要调整或完全撤销最后一次提交。对于这种情况,Git 提供了以下强大的命令:

Soft reset

git reset --soft HEAD^
复制代码

这个命令允许你回溯你的最后一次提交,同时保留你在暂存区中的所有更改。简单地说,您可以使用此命令轻松地取消提交,同时保留代码更改。当您需要修改上一次提交时,这个命令非常方便。

Mixed reset

git reset --mixed HEAD^
复制代码

这是使用git reset HEAD^而不指定--soft--hard时的默认行为。它取消提交最后一次提交,并从暂存区中删除其更改。但是它会将这些更改保留在工作目录中。当你想取消提交最后一次提交并从头开始进行更改,同时在重新提交之前将更改保留在工作目录中时,这很有帮助。

Hard reset

git reset --hard HEAD^
复制代码

git reset --hard HEAD^会从 Git 历史记录中完全删除最后一次提交沿着的所有相关更改。当你使用git reset --hard HEAD^时,就没有回头路了。所以当你想永久放弃最后一次提交和它的所有修改时,要非常小心地使用它。

感谢您的阅读,希望这篇文章对你有帮助,可以帮助你提高工作效率。

相关内容拓展:(技术前沿)

近 10 年间,甚至连传统企业都开始大面积数字化时,我们发现开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。针对这类问题,低代码把某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。极大的提高了程序员的生产效率。

介绍一款程序员都应该知道的软件 JNPF 快速开发平台,基于 Java/.Net 双技术引擎,专注于低代码,采用业内领先的 SpringBoot 微服务架构、支持 SpringCloud 模式,完善了平台的扩增基础,满足了系统快速开发、灵活拓展、无缝集成和高性能应用等综合能力;采用前后端分离模式,前端和后端的开发人员可分工合作负责不同板块,省事又便捷。

免费体验官网:https://www.jnpfsoft.com/?infoq


看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
软件工程师必备的10个Git命令(先码住)_git_伤感汤姆布利柏_InfoQ写作社区