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

拼写错误的最后提交消息

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

 

git commit --amend

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

拼写错误的分支名

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

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

如:

 

git branch -m feature-brunch feature-branch

但如果您已推送此分支,则需要执行几个额外步骤。我们需要从远程删除旧分支并推送新分支:

 

git push origin --delete feature-brunch
git push origin feature-branch

不小心将所有更改提交到主分支

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

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

注意:确保先提交或存储更改,否则一切都将丢失!

 

git branch feature-branch
git reset HEAD~ --hard
git checkout feature-branch

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

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

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

添加忘掉的文件,然后运行该此靠谱命令:

 

git add missed-file.txt
git commit --amend

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

将错误的文件添加到仓库

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

如果您所做的只是暂存文件但尚未提交,那就像重置该暂存文件一样简单:

 

git reset /assets/img/misty-and-pepper.jpg

如果你已经提交了这些改变,那也不用担心了。您只需要在之前执行额外的步骤:

 

git reset --soft HEAD~1
git reset /assets/img/misty-and-pepper.jpg
rm /assets/img/misty-and-pepper.jpg
git 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-branch
3ff8691 (HEAD -> feature-branch) HEAD@{2}: checkout: moving from master to feature-brunch
2b7e508 (master) HEAD@{3}: reset: moving to HEAD~
3ff8691 (HEAD -> feature-branch) HEAD@{4}: commit: Adds the client logo
2b7e508 (master) HEAD@{5}: reset: moving to HEAD~1
37a632d HEAD@{6}: commit: Adds the client logo to the project
2b7e508 (master) HEAD@{7}: reset: moving to HEAD
2b7e508 (master) HEAD@{8}: commit (amend): Added contributing info to the site
dfa27a2 HEAD@{9}: reset: moving to HEAD
dfa27a2 HEAD@{10}: commit (amend): Added contributing info to the site
700d0b5 HEAD@{11}: commit: Addded contributing info to the site
efba795 HEAD@{12}: commit (initial): Initial commit

记下最左边的列,因为这是索引。如果要返回历史记录中的任何一点,请运行以下命令,将{index}替换为该引用,例如dfa27a2。

 

git reset HEAD@{index}

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

最常见的Git错误都有哪些,如何解决它们?相关推荐

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

    脚本之家 你与百万开发者在一起 如果您曾经与许多开发者一起开发一个大项目,那么使用 Git 作为版本控制是一个最好的选择.不过 Git 很复杂,使用过程中经常会犯各种错误.在本文中,我将讨论程序员在使 ...

  2. 6种常见的Git错误以及解决的办法

    我们都会犯错误,尤其是在使用像Git这样复杂的东西时.如果你是Git的新手,可以学习如何在命令行上开始使用Git.下面介绍如何解决六个最常见的Git错误. Photo by Pawel Janiak  ...

  3. 常见的 Git 错误解决方法

    常见的 Git 错误解决方法 从索引中取消暂存文件/目录 编辑上次提交的邮件 忘记了上次提交中的一些更改 放弃本地更改 已将个人数据提交到本地存储库 password files 将最新的提交替换为新 ...

  4. Git错误non-fast-forward后的冲突解决

    当要push代码到git时,出现提示: error:failed to push some refs to ... Dealing with "non-fast-forward" ...

  5. 【编码错误】新手程序员常见的编码错误

    新手程序员常见的编码错误 文章目录 前言 一.没有了解需求就开始写代码 二.不沟通交流就开始做需求 三.代码素养差 四.编码问题总结 4.0不注重代码格式 4.0.1空格 4.0.2换行 4.1随意命 ...

  6. 开发中常见的低级错误--被自己气哭

    开发中常见的低级错误--被自己气哭 前言 踩过的坑 请求路径写错 用生产地址测试本地代码 看错项目 变量名拼错 提交了相似分支 复制粘贴的分支逻辑忘记改过来 数据库存储超限制后会被自动截断 再会 前言 ...

  7. 如何修复GIT错误:目标文件为空?

    本文翻译自:how to fix GIT error: object file is empty? When I try to commit changes, I get this error: 当我 ...

  8. 最常见的HTTP错误

    1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...

  9. 几个常见的 slice 错误

    最近看到 medium 上有篇文章[1]把关于 slice 的常见错误总结出来了,有些甚至是老司机也容易犯的.每个错误都先描述问题,再给出修改建议,最后再展示一个代码样例. 之前饶大写过一篇关于 sl ...

最新文章

  1. python如何调用参数配置文件_python参数设置
  2. MySQL服务器修改主机名后问题解决
  3. UA MATH563 概率论的数学基础 鞅论初步4 Radon-Nikodym定理,条件期望的存在唯一性
  4. windows11推出:win10可免费升级,支持安卓APP,减重40%
  5. [转] Windows Server 2012 Beta Cluster (Hyper-V 3.0)-SMB篇
  6. 操作系统lab2实验总结——Part1
  7. pytorch自定义模型执行过程
  8. 为真全面屏探路?2019款新iPhone将采用超小前置摄像头
  9. jqueryMobile模块整理—按钮(buttons)
  10. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_01-项目概述-功能构架-项目背景...
  11. oracle+in+多,Oracle in子句过多的硬编码引发的故障
  12. Unity3D做的DEMO
  13. ASCII码对照表--符号/十进制/十六进制
  14. ffmpeg连接rtsp流提示Connection refused
  15. 我怎梦想是计算机科学家,我的梦想是当一名科学家作文
  16. 袋鼠!沃尔沃的无人车就是搞不定这种动物
  17. md5解密算法 java_MD5算法解密java
  18. C语言 neutralize函数,因子中性化
  19. 深圳各区对企业制定行业标准和国家标准的补贴,奖励5-200万
  20. 计算机应用基础0039答案,计算机应用基础-0039(贵州电大-课程号:5205004)参考资料...

热门文章

  1. 微信小程序开发快速上手
  2. OpenCV实践之路——使用imread()函数读取图片的六种正确姿势
  3. 愚弄了上万人,AI开始文化入侵了?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  4. 想升职?不妨和老板争一争!
  5. Remote Development Tips and Tricks
  6. maven中的一些依赖
  7. 基于支付宝小程序合成海报
  8. 不同浏览器JS获取浏览器高度和宽度
  9. flex布局(flex容器,flex属性)
  10. 利用Python实现矢量逐个图斑裁剪栅格,形成图斑对应的栅格文件