拯救你工作的 Git 命令
真正的错误是有错误却不改正
精心制作的东西值得一看
你的错误不能定义你
寻找您的选择,挑选最好的一个,然后坚持下去。
不想全部买?没问题——直接结账
有一天……但不是现在,还没有
现在是您需要寻求帮助的时候了。
结论
感谢信
在本文中,我们将学习一些救命的 Git 命令。
我们不仅会了解它们,还会通过理解它们在幕后的工作方式来构建一个心理模型。
其中一些您可能以前使用过,而其他一些对您来说可能是新的,但它们都是救星。
真正的错误是有错误却不改正
“你的拼写错误和编辑历史都会被记录下来”
- 匿名的
打字错误时有发生!
Git 为我们提供了纠正错误的选项。
提交时,有时我们按“Enter”键太快,导致提交消息中的某处出现拼写错误。
完美!现在,你的同事不会看到你的“ commit ”原来拼写为“ committ ”。
精心制作的东西值得一看
您可能已经多次使用过该命令git add <file>
,git add .
但这样做并不允许我们仅提交文件的一部分。
git add -p
允许您暂存已更改文件的部分内容,而不是整个文件。
这使您可以做出简洁、精心制作的提交,从而使历史记录更易于阅读。
这样做可以提高提交的质量。
它还可以轻松删除文件中仅用于调试目的的部分更改 - 在提交之前无需返回编辑器。
一旦此命令运行,我们将被询问有关“hunks”的问题。
您会在终端底部看到问题“暂存此块 [y, n, g, a, d, e, ?]?”。
当完成所有“大块”后,我们将能够看到我们的提交已准备就绪,我们可以继续推动!
额外提示:
git commit -p
将git add -p
和结合git commit
在一个命令中。
你的错误不能定义你
你提交了代码,但现在后悔了?也许你不小心提交了机密信息——这不是个好主意——或者你想在代码更改中添加更多测试。
这些都是撤消上次提交的合法理由。
Git 为我们提供了一个撤消上次提交的命令。
该命令git reset
有多种可以拖曳的内容,让我们来讨论一下“软”拖曳。
git reset —soft HEAD~
从当前分支中删除提交,但保留更改!
此命令的妙处在于更改不会消失!
所有更改都将保留在工作树中!
如果您不想保留某些提交引入的更改,则使用git reset —hard HEAD~
额外提示:
git pre-commit 钩子是一个内置功能,可让你定义在每次提交前自动运行的脚本。使用它来减少取消提交的需要。
寻找您的选择,挑选最好的一个,然后坚持下去。
假设您正在与一个开发团队合作开展一个中型到大型项目。
另一个团队成员提出了一些更改,并且您希望将其中一些更改应用到您的主项目中,而不是全部。
因为管理多个 Git 分支之间的更改可能成为一项复杂的任务,并且您不想将整个分支合并到另一个分支中。
你只需要挑选一两个特定的提交。从其他分支挑选一些更改到你的主项目分支,这被称为“挑选”。
在这个命令中,我们可以选择一个有提交的分支,并将其拉取到另一个分支。我们来演示一下。
提交是您的 git 存储库在某一时间点的快照,并且每次提交都会累积形成您的存储库历史记录。
该cherry-pick
命令从目标提交中获取更改并将其放置到当前签出的分支的 HEAD 上。
从这里,您可以继续处理工作目录中的更改,也可以立即提交精心挑选的更改。
如果您不小心提交到了错误的分支,这将很有帮助。
通过挑选,您可以将这些更改放到正确的分支上,而无需重新进行所有工作。
但是,cherry-pick
请谨慎使用!
过度使用cherry-pick
可能会导致重复提交,有时可能需要合并才能保留提交历史记录。
现实生活场景:
假设我们有一个分支76d12
并且我们已经提交了所有的更改。
还有另一个分支,我们只需使用,master
但这可以是任何分支,并且我们希望拉入76d12
的提交。
通过使用该命令,git cherry-pick 76d12
我们可以将整个提交放入另一个分支。
不想全部买?没问题——直接结账
想要从分支中选择一个特定文件并将其带入当前分支吗?
Som,我git checkout
主要用来从一个分支切换到另一个分支。
是的,我知道,但我们也可以用它来检出文件和提交。
这很像git cherry-pick
,但不是“挑选”整个提交,而是我们更深入地研究一个分支并只挑选我们想要合并的特定文件。
在整个过程中master
,我们可以运行命令git checkout Som-test index.js
来获取特定分支中特定的已提交文件,并将其带到 master 并最终推送。
当特定分支的更改很多并且我们只想寻找一个文件进行测试或推送时,这非常巧妙。
它是如何工作的:
git checkout
告诉 Git 哪个分支或提交应用你的新更改。
分支只是指向 1 个特定提交的指针,而提交是存储库在某个时间点的快照。
分支指针会随着您所做的每个新提交而移动。
如果您想对当前尚未签出的分支进行更改,则首先需要签出该分支。
检出分支将更新您的 repo 文件以匹配分支指向的提交的快照。
从这里开始,分支指针将跟随您在分支上进行的每个新提交。
也可以直接签出提交,这将更新您的 repo 文件以匹配您签出的提交的快照。
请注意,签出提交会将 HEAD 指针移动到提交而不是分支,从而使您的存储库处于所谓的“分离头状态”,其中任何更改都不会提交到分支。
虽然 git checkout 非常适合处理分支,但它也是审查旧提交的有用工具,因为它会将您的 repo 版本切换到这个较旧的快照。
有一天……但不是现在,还没有
假设我们对一个文件做了很多更改,但在提交和推送之前需要返回并测试一些东西,或者我们还没有准备好提交我们的更改。
这就是git stash
发挥作用的地方。
当我们运行命令时,git stash
它会获取那些已保存的、未提交的更改并将它们“存储”以供以后使用。
然后我们可以在不同的分支之间移动,将更改拉入主分支等。
一旦我们完成测试或完成所有需要做的事情,我们就可以回到我们的分支,运行命令git stash pop
,我们的更改就会恢复!就像我们从未离开过一样!
现在是您需要寻求帮助的时候了。
git 命令种类繁多,但关键在于,我们不应该在不知道这些命令会对代码产生什么影响的情况下运行它们。
如果我们刚才运行,git help <command>
我们会在终端中得到该命令的解释。
额外提示:
运行该命令git help -w <command>
会直接将我们带到该网站,我们可以在该网站上阅读有关该命令的所有内容。
结论
Git 是一款极其实用的工具。但如果操作不当,它可能会变成一场噩梦。希望这些隐藏的宝藏能让你提升 Git 的使用效率。
你常用的 Git 命令是什么?请在评论区留言告诉我!
感谢信
我想借此最后一次机会向您表示感谢。
谢谢你来看我!如果没有像你这样的人一直关注我,并勇敢地阅读我的帖子,我不可能取得今天的成就。
我希望您能关注我未来的博客文章并留下来,因为我们这里有一些很棒的东西。
我希望在未来的许多年里我能在您的职业生涯中为您提供帮助!
下次再见。再见!
文章来源:https://dev.to/polymathsomnath/git-commands-that-will-save-your-job-14ac