• 微信:WANCOME
  • 扫码加微信,提供专业咨询
  • 服务热线
  • 0769-23063100
    13027920428

  • 微信扫码访问本页

可能每天都会用到的Git命令速查表

旺道.商弈 -> 正文

英文 | https://medium.com/swlh/git-ready-a-git-cheatsheet-of-commands-you-might-need-daily-8f4bfb7b79cf


我每天都使用Git。

我想,大多数软件开发人员也是如此。

老实说,莱纳斯·托瓦尔兹(Linus Torvalds)的小项目几乎感觉像是一个奇迹。

但是,该工具功能强大且使用广泛,以至于很容易在其所有可能的命令中迷失方向。

因此,根据我自己的经验,以下是我经常遇到的关于"如何使用Git进行X运算"的常见问题的解答。我们中有些人甚至可能每天使用这些解决方案。

确实,这里解决的许多命令将非常简单,并且通常为大多数开发人员所熟知。

但是,我认为这对于记住一处你遗忘的命令可能是一个一站式服务的场所,并且为初学者提供了良好的基础。

相反,如果您希望深入了解Git,可以查看这篇文章(地址:https://levelup.gitconnected.com/learning-the-internals-of-git-by-hacking-websites-c70c59303b12)。

Git速查表

在不提交更改的情况下存储更改

这是一个简单的示例,只需运行:

git stash

然后,要恢复这些存储的更改,并确保你位于同一分支,可以运行:

git stash apply

干掉所有未提交的更改

有时你想尝试一些方法,但效果不佳。要摆脱自上一次提交以来所做的所有更改,只需运行:

git checkout -- .

要仅清除特定文件或目录中的更改,请。可以替换为您希望从中删除更改的文件和/或目录的列表。

将fork与主仓库同步

分支项目时,请务必保持最新状态,以避免在发出请求时出现复杂的合并冲突,或者只是确保您具有所有新功能和安全补丁。

因此,这是同步叉子的方法:

1、添加一个远程仓库

从分支的位置获取上游(主)存储库的地址。然后运行以下命令,替换URL:

git remote add upstream 

你可以通过运行git remote -v来检查是否有效。

2、将fork与上游仓库同步

要同步派生,请获取上游存储库:

git fetch upstream

然后,在你要与之同步的分支(通常是主节点)上,运行:

git merge upstream/master

或git根据你选择的策略对上游/主服务器进行重新设置。

删除最后的X次提交

做出一些你最终需要还原的提交?你可以通过两种方式进行操作:

git reset HEAD~2 # undo the commits but keep the changesgit reset --hard HEAD~2 # undo the commits and discard changes

使用第二个选项,就好像提交从未发生过。

你应该将2替换为你希望从最新提交(HEAD)返回的提交数。

将各种提交压缩为一个(无需重新设置!)

如果你想摆脱所有的"修订错误"提交,并将它们全部合并为一个,则可以使用以下方法:

git reset --soft HEAD~2 && git commit -m "your message"

请记住将2替换为您要从HEAD计数的提交次数。

在上一次提交时签出项目的状态

要返回过去查看过去一次给定提交的项目状态,请首先运行git log以查看提交历史记录,然后选择要返回的提交。

然后,复制其哈希并仅运行git checkout 。这将使你处于"分离头"模式。要返回,只需按名称签出分支即可。

忽略已经添加到Git的文件

我们到过那里-添加或提交我们不应该拥有的东西。要将文件从Git跟踪中删除并保留在系统中,只需执行以下操作:

git reset <file> && echo <file> >> .gitignore

提交后添加到提交中

如果要更改提交消息或向其中添加新文件,可以使用git ammend。

要更改消息,请使用:

git commit --amend -m ""

并向上一次提交添加新文件:

git add  && git commit --amend

请注意,这"省去了创建新提交的麻烦",但实际上确实在后台创建了新提交。因此,只有在尚未将更改推送到远程存储库时,才应该这样做。

从Git删除文件并修剪其整个历史记录

如果你曾经将敏感数据推送到远程存储库(例如,在GitHub上),则不仅需要从Git跟踪中删除文件,还需要删除其整个历史记录。

你也不应该再使用该数据,例如在使用API密钥,密码等的情况下。

这样做的过程并不是最简单的,但是GitHub已经编写了一个整页的教程,因此我认为我应该在这里链接它。

"从存储库中删除敏感数据-GitHub"。(地址:https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/removing-sensitive-data-from-a-repository

记录合并冲突解决方案

为了避免多次解决相同的确切合并冲突,可以启用合并冲突解决方案的Git缓存。这将存储合并冲突的解决方式,如果再次出现,将自动解决相同的冲突:

git config --global rerere.enabled true

在Git Docs上了解有关此内容的更多信息。

错误分支上的提交

如果你在错误的分支上进行了提交,则应该能够使用我们有关删除提交的知识来解决该问题,如下所示:

git branch <new_branch> && git reset HEAD~2 --hard

这将创建一个新分支,并从你错误地添加了提交的当前分支中删除指定数量的提交。

如果你实际上希望这些提交在现有分支上而不是在新分支上进行,则可以执行以下操作:

git checkout <desired_branch> && git merge <branch_with_commits>git checkout <branch_with_commits> && git reset HEAD~2 --hard

但是,如果不能合并,则可以使用git cherry-pick,如下所示:

git checkout <desired_branch>git cherry-pick <branch_with_commits> <branch_with_commits>~2git checkout <branch_with_commits> && git reset HEAD~2 --hard

更改分支名称

要更改分支的名称,请使用git branch -m。你可以更改当前分支的名称:

git branch -m <new_name>

或更改任何分支的名称:

git branch -m <old_name> <new_name>

查找带有错误的提交

如果你遇到与提交无关的问题,则需要确定过去是哪种提交导致了此问题。这在测试中很常见,例如,由于一项与你的工作完全无关的测试而无法通过时。

在这种情况下,要查找"不良"提交,可以使用git bisect。

它的工作方式如下:

1、开始过程

git bisect start

2、将当前提交标记为"不良"

git bisect bad

3、将过去的提交标记为"良好"

例如,使用git log查找过去的提交,其中事情按预期进行(即良好)。然后,运行:

git bisect good <commit_hash>

4、平分秋色!

你现在应该收到以下消息:

Bisecting: 2 revisions left to test after this (roughly 3 steps)[6ca4a67aeb4b0d9835ecf15e44505c48f93642c9] my-branch

数字,哈希和分支名称自然会与您不同。

在这里,Git正在做的事情是一步一步地完成提交,直到找到被破坏的提交为止。你无需运行git checkout,因为它已为你处理。

在每次提交时,都应检查一切是否正常。如果不是,请使用git bisect bad将提交标记为错误。如果是,则使用git bisect good将其标记为好。

将提交标记为良好后,Git会将您带到第一个"不良"提交(即,你标记为不良的最后一个),以便你可以正确地调查错误。完成后,只需通过签出分支(git checkout )返回分支的头并解决问题。

以上就是我解决问题的方案。Git是一个很棒的工具,我希望这个备忘单可以帮助你解决一路上可能遇到的一些问题。

它绝对不会涵盖你需要了解的所有内容,但这是一个好的开始。

感谢你的阅读,并在留言区告诉我,你最喜欢的Git命令。


陈春花:营销的根本在于理解消费者

巨变时代,企业曾经行之有效的经验和方法也许不再有效,营销需要做合适的事情,其根本在于理解消费者,在创造顾客价值上的有所作为。春暖花开市场经济环境

生意有术(NO.24):像素级模仿顶尖高手

所以,很多人会热衷于报这个班,报那个班,各种的认识人,这一定程度上是急性“学习狂热症”,很容易造成迷失,迷失在各种方法体系里,有的东西却彼此相悖

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将-今日头条

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将、小说等等这些东西无时不刻诱惑着我们。穷人若想变富,必须要把精力和时间用在学习知

程序员三大基础思维简谈:协议、接口和分层

不管是硬件设备、软件概念或者是网络通讯中,协议、接口无处不在,软件系统离不开分层模型。协议和分层,各种课程都有涉及,但可惜的是,很多计算机类专业

老实人做生意做不好是有原因的:人家给你钱,你都不敢收!

这里面底层的差别在哪里,你有两个问题需要及时去解决:第一:你不会收钱;要做到这点,咱们必须得找到自己的价值,同时,还得让客户认识到你的价值。

Google 在中国大陆上线官方镜像资源站,为开发者提供访问和支持

摘要: Google 中国近日在其运营的公众号「谷歌开发者」中发布公告:目前国内开发者可通过 google.cn 直接访问 web.dev 以及... ...

生意之道:想赚大钱,就要学会与人分钱

只要你得到了好处 ,你就一定要分给别人,你只要每次都给了别人好处,你就会有源源不断的生意,就会源源不断地赚到许多莫名其妙的钱财,哈哈,这个莫名其... ...

2024流量共生,公域做规模,私域要复利

公域和私域是共生关系,在单独探讨一方时候总不自觉地思考与另一方的关系和联动。有很多企业两者之间会有所侧重,比如重公域销售,跑通投产比就持续放大,... ...

Nginx 常用配置汇总!从入门到干活足矣

众所周知,Nginx 是 Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现... ...

分布式架构和微服务架构的区别

1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机... ...

大屏可视化综合展示平台解决方案

概述建立大屏可视化综合展示平台,构建各业务板块统一的大数据分析平台,构建数据驾驶舱与智慧调度平台。深入探索挖掘企业的客户信息数据,以“大数据”理... ...

Ideogram:一款秒杀Midjourney,免费无限生成的AI绘画神器

导读:Ideogram AI是一个文本生成图片的平台,它最大的优点就是好用、免费又没有生成限制,因此可以秒杀MJ和SD。AI绘画是人工智能领域的... ...

陈春花:营销的根本在于理解消费者

巨变时代,企业曾经行之有效的经验和方法也许不再有效,营销需要做合适的事情,其根本在于理解消费者,在创造顾客价值上的有所作为。春暖花开市场经济环境... ...

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将-今日头条

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将、小说等等这些东西无时不刻诱惑着我们。穷人若想变富,必须要把精力和时间用在学习知... ...

ChatGPT时代,重新定义官网

ChatGPT时代已来,人机之间用自然语言交流成为现实,用户表达需求的方式可以更自然、更直接。那么,各大网站上复杂的导航栏设计、重复性极高的筛选... ...

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变... ...

你的店铺真的盈利了吗?万能「烘焙运营公式」奉上!

面包王子说:做好一个店铺,并不只是运营店铺,而是在做一家企业,门店需要一家企业所要拥有的一切。包括:组织能力、战略能力和营销能力的三大方向。我们... ...