当前位置: 首页 > 科技观察

Git备忘单命令编码员可能每天使用

时间:2023-03-14 21:31:08 科技观察

日常问题的实用答案我每天都使用Git。大多数软件开发人员也是如此。老实说,LinusTorvalds的小项目几乎感觉像是一个奇迹。但是,该工具功能强大且用途广泛,很容易迷失在所有可能的命令中。因此,根据我自己的经验,这里是我经常收到的关于“如何使用Git做X”的常见问题的答案。我们中的一些人甚至可能每天都使用这些解决方案。实际上,这里介绍的许多命令都非常简单,而且大多数开发人员通常都很熟悉。但是,我认为这可以成为记住您忘记的命令的一站式商店,并为初学者提供良好的基础。相反,如果您想了解有关Git的更多信息,可以查看这篇文章。Git备忘单来存储更改而不提交它们这是一个简单的示例,只需运行:gitstash然后,要恢复那些隐藏的更改并确保您在同一分支上,您可以运行:gitstashapply杀死所有未提交的更改有时你想尝试一些东西,但效果不是很好。要删除自上次提交以来所做的所有更改,只需运行:gitcheckout--。要仅清除特定文件或目录中的更改,.可以替换为您希望从中删除更改的文件和/或目录列表。将分叉项目与主存储库同步时,请务必使其保持最新,以避免在发出拉取请求时发生复杂的合并冲突,或者只是为了确保您拥有所有新功能和安全补丁。因此,这里是同步一个分支的方法:(1)添加一个远程存储库从分支的位置获取上游(主)存储库的地址。然后运行以下命令,替换URL:gitremoteaddupstream您可以通过运行gitremote-v检查它是否有效。(2)与上游仓库同步fork要同步fork,获取上游仓库:gitfetchupstream然后,在你想要同步的分支上(通常是master),运行:gitmergeupstream/master或git取决于你选择的策略执行上游/主服务器上的重置。删除最后的X次提交做一些你最终需要恢复的提交?您可以通过两种方式执行此操作:gitresetHEAD~2#undothecommitsbutkeepthechangesgitreset--hardHEAD~2#undothecommitsanddiscardchanges使用第二个选项就好像提交从未发生过一样。您应该将2替换为您希望从最新提交(HEAD)返回的提交数。将各种提交压缩为一个(无需重置!)如果你想摆脱所有“修订错误”提交,并将它们全部合并为一个,你可以使用:gitreset--softHEAD~2&&gitcommit-m"yourmessage"请记住将2替换为您要从HEAD计算的提交数。查看上次提交时的项目状态要回到过去并查看过去给定提交时的项目状态,请先运行gitlog查看提交历史,然后选择您想要的提交回去。然后,复制它的散列并运行gitcheckout。这将使您进入“分离头”模式。要返回,只需按名称检查分支。忽略已经添加到Git中的文件我们一直都在-添加或提交我们不应该拥有的东西。要从Git跟踪中删除文件并将其保留在系统中,只需执行以下操作:gitreset&&echo>>。你可以使用git修改。要更改消息,请使用:gitcommit--amend-m""并将新文件添加到先前的提交中:gitadd&&gitcommit--amend请注意,这“省去了创建新提交的麻烦",但实际上确实在后台创建了新的提交。因此,只有在您尚未将更改推送到远程存储库时才应执行此操作。从Git中删除文件并删除其整个历史记录如果您曾将敏感数据推送到远程存储库(例如,在GitHub上),您不仅需要从Git跟踪中删除该文件,还需要删除其整个历史记录。您也不应再使用该数据,例如API密钥、密码等。这样做的过程并不是最简单的,但GitHub已经写了整页教程,所以我想我应该在这里链接到它。“从存储库中删除敏感数据-GitHub”。记录合并冲突解决方案为了避免多次解决完全相同的合并冲突,可以启用合并冲突解决方案的Git缓存。这将存储合并冲突是如何解决的,如果它再次发生,将自动解决相同的冲突:gitconfig--globalrerere.enabledtrue在Git文档上了解更多信息。在错误的分支上提交如果你在错误的分支上提交,你应该能够使用我们所知道的删除提交来修复它,就像这样:gitbranch&&gitresetHEAD~2--hard这将创建一个新的分支分支,并从您错误添加提交的当前分支中删除指定数量的提交。如果你真的希望这些提交在现有分支而不是新分支上,你可以这样做:gitcheckout&&gitmergegitcheckout&&gitresetHEAD~2--hard但是如果你不能合并,然后你可以像这样使用gitcherry-pick:gitcheckoutgitcherry-pick~2gitcheckout&&gitresetHEAD~2--hardchangebranchname更改分支的名称,使用gitbranch-m。您可以更改当前分支的名称:gitbranch-m或更改任何分支的名称:gitbranch-m以查找有错误的提交导致此问题的提交类型。这在测试中很常见,例如,当您测试失败时,因为它与您的工作完全无关。在这种情况下,要查找“错误”提交,您可以使用gitbisect。它是这样工作的:启动进程gitbisectstart将当前提交标记为“坏”gitbisectbad将过去的提交标记为“好”例如,使用gitlog查找过去的提交,其中工作按预期进行(即好)。然后,运行:gitbisectgoodBi??sect!您现在应该收到以下消息:Bisecting:2revisionslefttotestafterthis(roughly3steps)[6ca4a67aeb4b0d9835ecf15e44505c48f93642c9]my-branchnumber,hashandbranchnamewillnaturallybemuchfromyour.在这里,Git正在做的是逐步执行提交,直到找到损坏的提交。您不需要运行gitcheckout,因为它已为您处理。在每次提交时,您应该检查一切是否正常。如果不是,请使用gitbisectbad将提交标记为错误。如果是,请使用gitbisectgood将其标记为良好。在将提交标记为良好后,Git会将您带到第一个“错误”提交(即您标记为错误的最后一个提交),以便您可以正确地调查错误。完成后,只需通过检出分支(gitcheckout)返回到分支的头部并解决问题。今天是我给的。Git是一个很棒的工具,我希望这份备忘单能帮助您解决在此过程中可能遇到的一些问题。它肯定不会涵盖您需要了解的所有内容,但这是一个好的开始。