常见的 Git 错误解决方法
常见的 Git 错误解决方法
- 从索引中取消暂存文件/目录
- 编辑上次提交的邮件
- 忘记了上次提交中的一些更改
- 放弃本地更改
- 已将个人数据提交到本地存储库
- password files
- 将最新的提交替换为新的提交
- 提交了错误的数据
- 恢复已删除的本地分支
- 撤消在提交中所做的更改
- 给我的分支起了一个错误的名字
- 在推送到远程之前重新排列历史记录
- 将不相关的更改提交到单个提交中
- 在所有分支上的所有提交中更改作者电子邮件
- 丢失和找到的文件
- 忘记了哪个分支有我的提交 ID
- 从历史记录中删除提交
- 已将错误的分支推送到远程
从索引中取消暂存文件/目录
在添加和/或修改文件时,您通常倾向于使用“git add”命令的默认行为,即将所有文件和目录添加到索引中。 很多时候,您觉得有必要在提交文件之前取消暂存某些文件或最后一次修改它们。
语法: git reset <filename/dirname>
从“索引”区域取消暂存文件使你有机会在提交到本地存储库之前重新处理数据。
编辑上次提交的邮件
命令:
您可以编辑最新的提交消息,而无需创建新消息。为了列出提交日志,我设置了一个别名“hist”:
命令:git commit --amend git config --global alias.hist 'log --pretty=format:“%C(yellow)%h%Creset %ad | %C(green)%s%Creset%C(red)%d%Creset %C(blue)[%an]” --graph --decorate --date=short’x
不要修改已经推送到远程存储库并与他人共享的提交消息,因为这会使早期的提交历史记录无效,因此基于该消息的任何工作都可能受到影响。
忘记了上次提交中的一些更改
假设您忘记进行一些修改并且已经提交了快照,并且您也不想再次提交以突出显示您的错误。
命令: git commit --amend
我已经强调了如何重新创建和更改最近的提交对象的sha-1 id。我假装做了一个提交,将两个更改混合为一个。
放弃本地更改
因此,这是我修改“README”文件并暂存它的情况。接下来,我第二次修改了同一文件,但意识到我不想要第二次更改。
现在,让我不要手动撤消整个更改,我可以简单地拉取文件的暂存版本。
语法:
–文件中的本地更改
– 目录中所有文件的本地更改
git checkout – git checkout –
命令: git checkout – README
因此,我放弃了对文件的最后一次更改,并接受了文件的暂存版本。在下一次提交中,只有文件的暂存版本进入本地存储库。
已将个人数据提交到本地存储库
我想从本地存储库中删除某些数据,但将文件保留在工作目录中。
语法:
git reset --mixed HEAD~
git reset --mixed <commit-id>
命令:
HEAD~1 表示在当前分支 HEAD 所指向的最近提交之前的提交。git reset --mixed HEAD~1
当前快照中的文件已从本地存储库和暂存区域中删除。在全局 .gitignore 文件中添加以下模式,以将其从 git 的跟踪中排除。
vim ~/.gitignore_global
password files
*.pass
*.key
*.passwd
这样,将删除具有密码文件快照的提交,并获得一个干净的暂存区域。我的文件仍然存在于我的工作目录中,但不再存在于本地存储库中,也不会推送到远程存储库中。
谨慎:如果你失去了它们,git无法为你恢复它们,因为它不知道它。
将最新的提交替换为新的提交
语法: git reset --soft [ /HEAD~n>]
“–soft”选项只是在提交文件仍暂存于索引中时从本地存储库中删除这些文件,您可以在查看后重新提交它们。<提交 id> 是要从本地存储库中删除的快照的 sha-1。<HEAD~n> 其中 n 是 HEAD 提交之前的提交次数
命令:git reset --soft HEAD~1
修改文件并再次暂存
命令:
您的提交历史记录现在证明是:git commit -m ‘Adding index.html and style.css’
提交了错误的数据
语法:
–在最新提交的快照
之前将项目重置为’n’提交 – 将项目重置为给定的提交ID快照git reset --hard HEAD~ngit reset --hard
命令: git reset --hard HEAD~1
最新的提交和损坏的文件将从本地存储库,暂存区域以及工作目录中删除。
谨慎:这是一个危险的命令,因为您最终会丢失工作目录中的文件。不建议在远程共享存储库上使用。
回到我的旧项目状态
您可以在时间历史记录中放大到项目的旧状态。如果您在最新版本中搞砸了,或者需要在旧代码中进行增强,则可能需要从该旧项目快照中创建另一个分支,以免妨碍您当前的工作。让我们看看如何:
a。列出项目历史记录并确定较旧的提交 ID,命令:b。从提交 ID 创建另一个分支:
c。继续处理代码,稍后使用“master”分支合并/重定基值。git hist
git checkout -b old-state e7aa9a5
恢复已删除的本地分支
可以在参考分支上重新生成丢失的工作。比方说,我删除了分支“old_code”,而没有与主分支合并,丢失了工作。不,我也没有将分支推送到远程存储库,然后呢?好吧,git跟踪并保留对每个引用所做的所有更改的日记条目,让我们看看我的:git reflog
因此,HEAD@{2}是当我移动到“old_code”分支时的指针,让我们恢复它:
语法:
命令:git checkout -b git checkout -b old_code HEAD@{2}
您现在必须在“old_code”分支中,并在创建时拥有您的最新作品。此外,HEAD@{1}上的“reflog”指针是最近在“old_code”分支上进行的提交。要恢复此唯一提交,只需运行以下命令:这也将恢复工作目录中已修改的文件。git reset --hard HEAD@{1}.
如果您想详细了解此命令的工作原理以及如何管理“reflog”条目,您也可以阅读我之前关于从git reflog恢复已删除分支的文章。
撤消在提交中所做的更改
git revert用于记录一些新的提交,以扭转一些早期提交的影响。
语法:
从我的提交日志中,我想撤消在突出显示的提交ID中所做的更改:git revert
命令: git revert 827bc0d
更好的是,您不要重置“-hard”共享提交,而是“git revert”它们以保留历史记录,以便所有人都可以更轻松地跟踪历史记录日志以找出由谁以及为什么还原的内容?
您可以使用与 HEAD 指针相同的逻辑来引用有关 HEAD 指针的提交,而不是像 HEAD~3 或 HEAD~4 等那样给出提交 ID。
给我的分支起了一个错误的名字
您可以重命名本地分支名称。这种情况经常发生,您可能希望根据您正在处理的问题重命名分支,而无需经历将所有工作从一个位置迁移到另一个位置的痛苦。例如,您可以位于同一分支上,也可以位于不同的分支上,但仍然能够重命名所需的分支,如下所示:
语法:
命令:git branch -m <old_name> <new_name> git branch -m old_code old_#4920
您可能想知道git是否保留了此重命名的跟踪?是的,它确实指的是您的“reflog”条目,这是我的:
重命名分支不会影响其远程跟踪分支。我们将在远程部分看到如何替换远程存储库上的分支
在推送到远程之前重新排列历史记录
我多么希望我能比其他人更早做出某些承诺,而根本不会做出一些承诺。以交互方式重新排列和编辑旧提交,以有效地修复或增强代码
语法:
命令:–开始重新定位在提交 id fb0a90e 之后进行的提交git rebase -i <after-this-commit_id>git rebase -i fb0a90e
将不相关的更改提交到单个提交中
在这种情况下,您需要将旧的隐藏提交拆分为多个逻辑提交。
语法:
命令:
在变基编辑器中,您必须选择e7aa9a5提交ID并将其更改为“编辑”而不是“选择”。git rebase -i <after-this-commit_id>git rebase -i fb0a90e
您现在将处于项目的提交 id-e7aa9a5 版本中。首先,将提交历史记录和暂存区域重置为上一个提交命令:
其次,编辑 + 阶段 + 单独
提交文件 命令:git reset HEAD~1
git add code && git commit -m ‘Adding initial codes’
git add newcode && git commit -m ‘Adding new code’
第三,继续变基和结束。
命令:
第四,查看包含其他提交的历史记录。git rebase --continue
命令: git hist
在所有分支上的所有提交中更改作者电子邮件
很长一段时间以来,我一直在git中版本控制和提交我的项目文件,但直到现在,我从来没有发现我的电子邮件ID在我的提交历史日志中遭到破坏,这些日志甚至发布在远程存储库上。好吧,当您最初在“.gitconfig”文件中设置配置时,任何人都可能会发生这种情况。令我放心的是,git可以重写我们在创建提交对象时提供的环境变量。
首先,我获取电子邮件ID列表以决定要更改的电子邮件ID:命令:
-这将打印作者姓名<电子邮件id>(refname/branch-name)git log --all --pretty=format:“%an <%ae> %d”
其次,我运行每个分支上的每个提交,并使用新的电子邮件id
命令重写提交对象:
git filter-branch --env-filter '
if [ "$GIT_AUTHOR_NAME" = "divya" ]
then
GIT_AUTHOR_EMAIL = "xxx"
fi
' -- --all
丢失和找到的文件
假设您丢失了某个文件,并且您不记得其名称,但可以回忆起文件中的某些单词。在这种情况下,您可以按照以下步骤操作 -
步骤1:使用搜索的模式
命令列出曾经包含文件快照的所有提交:git rev-list --all | xargs git grep -i ‘timestamp’
步骤 2:从此突出显示的提交 id
语法创建新分支“失物招领”语法:git checkout -b lost-found d8c6a76a6dcb1fc6e8c3f6b097e1bd07e7cd328f
忘记了哪个分支有我的提交 ID
有时,在检测到错误的提交ID后,您可能还想知道所有具有此提交的分支,以便您可以修复所有分支。在大型多分支项目中,查看每个分支的历史不是很实用。
在我的导航构建应用程序中进行的错误提交一旦破坏了代码,那就是当我使用“git bisect”命令来检测错误的提交ID,然后执行命令:列出具有该错误提交的分支。git branch --contains
所以,现在我知道所有仍然有错误提交的分支,我可以恢复或重置这个变更集。
从历史记录中删除提交
有时我觉得有必要从历史中抹去一个承诺,不留下任何痕迹。我不建议你在共享分支上尝试这个特技,而只在你当地的分支上尝试这个特技。
语法:
命令:
在变基编辑器>将突出显示的提交ID的“edit”替换为“drop”:69f4813git rebase -i git rebase -i 93859d8
在某些情况下,这种重写可能会导致冲突。您必须解决冲突,然后继续操作。
警告:这是一个危险的命令,因为这会重写历史记录,并且可能会丢失数据。这样的分支与其远程分支不同,必须使用 or 选项进行推送。–force–force-with-lease
已将错误的分支推送到远程
现在,这是我想做的 - 我想删除一个远程分支,并停止从我的本地分支跟踪它.''命令,当与选项一起使用时,删除远程分支所以,这就是我获取克隆项目的本地副本的方式 -git push–delete
git clone https://github.com/greets/myProj.git
cd myProj
删除远程分支后,共享存储库中的其他分支必须刷新并更新其远程引用,并提供删除缺少的对象引用的选项:–prunegit fetch --prune -v origin
在这篇文章中,我提到了一些git可以帮助您修复的常见错误或更改。每个代码都是独一无二的,并且以自己的方式开发,因此也有不同的方法来处理和解决问题
常见的 Git 错误解决方法相关推荐
- git错误解决方法warning: user.name has multiple values
warning: user.name has multiple values $ git config --global user.name ******* warning: user.name ha ...
- jack server 常见错误解决方法
jack 服务常见错误解决方法 当你编译Android时,你不需要修改任何内容. Jack是Andriod M的默认编译工具.只需使用标准的makefile命令执行即可.当第一次执行jack时,它会在 ...
- jack 服务常见错误解决方法
jack 服务常见错误解决方法 当你编译Android时,你不需要修改任何内容. Jack是Andriod M的默认编译工具.只需使用标准的makefile命令执行即可.当第一次执行jack时,它会在 ...
- jack server 常见错误解决方法【转】
本文转载自:https://blog.csdn.net/qq_27061049/article/details/70156200 jack 服务常见错误解决方法 当你编译Android时,你不需要修改 ...
- 普元EOS开发积累第一篇(常见错误解决方法) 持续更新
普元EOS开发积累第一篇(常见错误解决方法) 持续更新 参考文章: (1)普元EOS开发积累第一篇(常见错误解决方法) 持续更新 (2)https://www.cnblogs.com/tangjing ...
- Spark程序运行常见错误解决方法以及优化
Spark程序运行常见错误解决方法以及优化 参考文章: (1)Spark程序运行常见错误解决方法以及优化 (2)https://www.cnblogs.com/double-kill/p/901238 ...
- 6种常见的Git错误以及解决的办法
我们都会犯错误,尤其是在使用像Git这样复杂的东西时.如果你是Git的新手,可以学习如何在命令行上开始使用Git.下面介绍如何解决六个最常见的Git错误. Photo by Pawel Janiak ...
- 常见宽带错误解决方法
最近做宽带的维护和安装,经常会遇到用户宽带连接连接不上,总结了一下常见故障: 错误691:一般是用户名或者卡网关的缘故(所谓卡网关实际上是指:用户此刻并没有使用ISP提供的账号登陆,在ISP却端显示用 ...
- C#常见错误解决方法
1.能提供Visual Studio开发工具包吗? 解决方法: Visual Studio 2017开发环境下载地址: https://www.visualstudio.com/zh-hans/dow ...
最新文章
- GHOST还原教程详细
- 互联网对erp行业到底有什么影响
- 教你如何更优惠的购买阿里云服务器?
- JVM调优总结 -Xms -Xmx -Xmn -Xss等
- linux安装无线电软件,基于Linux的软件无线电系统软件平台的研究与实现
- 组策略禁止自动锁定计算机,如何在Windows 10中禁用自动锁定
- pythondataframe如何替换值_如何将pandas dataframe中的字符串值替换为整数?
- 互联网常识(持续更新)
- int默认值为0,Integer默认值为null
- 快速构建Windows 8风格应用5-ListView数据控件
- RocketMQ源码 — 二、 NameServer
- 聊聊缓存淘汰算法-LRU 实现原理
- Java中集合List,Map和Set的差别
- 怎么提高Origin烂橘子的下载速度
- linux下如何查看tlq服务,谁能跟我讲解一下bashrc?
- 学田岛电脑绣花制版新人上手教程之一
- Android中framework层下添加aidl编译说程序包不存在
- 对比性句子sentiment analysis
- 核心业务8:提现+展示还款信息和回款信息
- 解决:Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-defin