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

时间: 2019-07-31阅读: 115标签: git

如果您曾经与许多开发者一起开发一个大项目,那么使用 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-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技巧吗? 欢迎分享!

本文翻译自 Medium
来自:https://my.oschina.net/javayou/blog/3081401



链接: http://www.fly63.com/article/detial/4439

git全局忽略设置和.gitignore

在使用git过程中,希望git忽略某些特殊文件或文件夹,避免提交例如.DS_Store等等。先来查看一下git状态:如果只是这一个项目中有部分不需要提交的内容,那么直接在项目最外层创建一个.gitignore

Git忽略文件不起作用的解决方法

开发过程中,我们自己会在gitignore 文件中添加一些忽略项,然而,每次使用git status 的时候都未列在 untracked里面,比如 用IDEA 开发,.idea 文件夹添加到该文件,再提交还是会提示。

git中的 Merge 和 Rebase

Rebase 和 merge 都被设计用来将变更从一个分支整合到另一个分支,但是它们的实现方式却不同。下面假如我们有如下提交,merge 会将两个分支的代码合并,而 rebase 会将 feature 分支上所有的变更在 master 分支上重新应用一遍

git pull/push时总需要输入用户名密码的解决方案

在提交项目代码或者拉代码的时候,git会让你输入用户名密码,解决方案:执行命令git config --global credential.helper store

总结Git 不同情况下撤销和如何回滚

在未进行git push前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”,进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

项目中常用的git指令

1.新建一个本地分支并切换到新建的那个分支:2.从一个分支切换到另一个分支:3.将代码恢复到最近的一次commit 时候的状态:4.将代码从最近的一次commit的状态恢复到最新的进度:

git workflow

Git与SVN的比较,Gitflow为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。新的功能分支应该从develop分支迁出一个feature分支,新功能开发完成之后再合并回develop分支,常用命令:

Git 中 Reset、Revert、Checkout的区别

git reset 、 git checkout 和 git revert 是Git中常用命令。经常傻傻分不清他们之间的区别。最近工作不忙,抽出时间参考了其他文档,对其总结了下。传给 git reset 和 git checkout 的参数决定了它们的作用域。

git强制覆盖master分支

在开发中,通常会保持两个分支master分支和develop分支,但是如果因为develop上面迭代太多而没有及时维护master,最后想丢弃master而直接将测试确认过的develop强推到master,该怎么操作呢?因此,做如下总结分享,希望对遇到同样问题的人用帮助。

git冲突_解决git代码提交冲突问题

提交代码出现冲突如何解决?包括:树冲突(文件名修改造成的冲突,称为树冲突)、内容冲突(git pull拉取最新代码发现)、直接编辑冲突文件、利用图形界面工具解决冲突

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全