git commit -amend_最常见的Git错误都有哪些,如何解决它们?

676d441f694395ae628938e9cf8e2e4e.png

脚本之家

你与百万开发者在一起

676d441f694395ae628938e9cf8e2e4e.png

14daffb97264b65a7a6ce1b3a1c37f1b.gif

如果您曾经与许多开发者一起开发一个大项目,那么使用 Git 作为版本控制是一个最好的选择。 不过 Git 很复杂,使用过程中经常会犯各种错误。 在本文中,我将讨论程序员在使用 Git 时所犯的一些常见错误以及如何解决它们。

拼写错误的最后提交消息

经过几个小时的编码后,您的提交消息可能存在很多拼写错误,好在有一个简单的解决方案:
git commit --amend

该命令将打开您的编辑器,并允许您更改最后一次提交消息。因为可能没人会注意到你写的 “Initial commment” 有三个 m。

拼写错误的分支名

假设已经是下午三点了,但是你还没有吃午饭。饥肠辘辘的你可能直接就用 feature-brunch 作为你的分支名了,哇塞,好美味啊。可是很明显你写错了,应该是 feature-branch 。所以你可以使用 mv

你可以使用 mv 命令类似重命名文件的方式重命名此分支:将其移动到具有正确名称的新位置。

如:
git branch -m feature-brunch feature-branch
但如果您已推送此分支,则需要执行几个额外步骤。 我们需要从远程删除旧分支并推送新分支:
git push origin --delete feature-brunchgit push origin feature-branch
不小心将所有更改提交到主分支

你可能正在开发一项新功能,由于太仓促,你忘记为它打开一个新的分支。这时候已经提交了大量文件,而且这些提交都位于主分支上。

现在我们需要使用以下三个命令将所有这些更改回滚到新分支:

注意: 确保先提交或存储更改,否则一切都将丢失!
git branch feature-branchgit reset HEAD~ --hardgit checkout feature-branch

这将创建一个新分支,然后将主分支回滚到您进行更改之前的位置,然后最终检出您之前所有更改完整的新分支。

忘了将文件添加到最后一次提交

另一个常见的 Git 陷阱是过早提交。你可能错过了一个文件,忘了保存它,或者需要对最后一次提交做一个小改动。这时候 --amend 再次成为你的朋友。

添加忘掉的文件,然后运行该此靠谱命令:
git add missed-file.txtgit commit --amend

此时,您可以修改提交消息,也可以只保存它以使其保持不变。

将错误的文件添加到仓库

但是如果你做的恰恰相反呢?如果您添加了一个不想提交的文件,该怎么办?一个流氓ENV文件,一个构建目录,一个你不小心保存到错误文件夹的狗的图片?这一切都是可以解决的。

如果您所做的只是暂存文件但尚未提交,那就像重置该暂存文件一样简单:
git reset /assets/img/misty-and-pepper.jpg
如果你已经提交了这些改变,那也不用担心了。 您只需要在之前执行额外的步骤:
git reset --soft HEAD~1git reset /assets/img/misty-and-pepper.jpgrm /assets/img/misty-and-pepper.jpggit commit

上述命令将撤消提交,删除图像,然后在其位置添加新提交。

天啊,我又干蠢事了!

这个命令适用于一切都出错的地方。当您从Stack Overflow中复制粘贴太多解决方案时,您的repo处于比启动时更糟糕的状态。我们都去过那儿。

git reflog 显示了您已完成的所有事情的列表。然后它允许你使用Git的神奇时间旅行技能回到过去的任何一点。但是你不应该轻易使用。

要获取此列表,请键入:
git reflog
我们所做的每一个动作,Git 都记录下来。 下面是执行该命令的输出示例:
3ff8691 (HEAD -> feature-branch) HEAD@{0}: Branch: renamed refs/heads/feature-brunch to refs/heads/feature-branch3ff8691 (HEAD -> feature-branch) HEAD@{2}: checkout: moving from master to feature-brunch2b7e508 (master) HEAD@{3}: reset: moving to HEAD~3ff8691 (HEAD -> feature-branch) HEAD@{4}: commit: Adds the client logo2b7e508 (master) HEAD@{5}: reset: moving to HEAD~137a632d HEAD@{6}: commit: Adds the client logo to the project2b7e508 (master) HEAD@{7}: reset: moving to HEAD2b7e508 (master) HEAD@{8}: commit (amend): Added contributing info to the sitedfa27a2 HEAD@{9}: reset: moving to HEADdfa27a2 HEAD@{10}: commit (amend): Added contributing info to the site700d0b5 HEAD@{11}: commit: Addded contributing info to the siteefba795 HEAD@{12}: commit (initial): Initial commit
记下最左边的列,因为这是索引。 如果要返回历史记录中的任何一点,请运行以下命令,将{index}替换为该引用,例如dfa27a2。
git reset HEAD@{index}

你是否有自己的一些 Git 技巧吗?欢迎分享!

本文翻译自 Medium

转载申明:本文由公众号开源中国(ID:oschina2013)授权转载。

292bb17f4053cafee6e867f5cfd3e984.gif

更多精彩

在公众号后台对话框输入以下关键词

查看更多优质内容!

女朋友 | 大数据 | 运维 | 书单 | 算法

大数据 | JavaScript | Python | 黑客

AI | 人工智能 | 5G | 区块链

机器学习 | 数学 | 留言送书

97129102690d2a0431c3a6f7c6e5984a.png

65315ca2cb7241b7e25b7dc19266b4e9.gif

● 8fedb9c0f861df00ec9cf7686ff929bd.gif 为初学者提供的终极Git命令教程----你需要知道的一切

● 8fedb9c0f861df00ec9cf7686ff929bd.gif 脚本之家粉丝福利,请查看!

● 8fedb9c0f861df00ec9cf7686ff929bd.gif 那些裸辞的程序员,都干嘛去了?

● 致敬经典:Linux/UNIX必读书单推荐给你

● 6月份GitHub上最热门的开源项目!

39c9545468b228ad1618f6e016f30ba9.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值