最常见的 Git 错误及解决方法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://icode.blog.csdn.net/article/details/99065259

最常见的 Git 错误及解决方法

经常用 Git,哪能不出错。

恢复时要注意 log 的时间,以及查看是否有别人操作的代码,尤其是 push revert,用 IDEA 中的工具查看比较直观。先在一个小项目自己动手测试一下,博客不能解决所有问题。

1、修改最后一次提交消息 - 提交消息写错了

解决方法:

git commit --amend

该命令将打开编辑器,并允许更改最后一次提交消息。

(按 i 进行编辑,编辑后,按 ESC,如果保存退出使用 :wq,只退出输入 :q,如果出错,退出不保存使用 :qa!)

2、Git 撤回 commit,但未 push 的内容

查看本地修改日志:

git log

(如果显示不全按回车键继续加载,按 q 退出;中文可能乱码;越靠上的是越近的修改)

(1)如果想保留提交之前的更改,使用 reset + id
(一般有两条,如果显示不全按回车键继续加载,按 q 退出,就是立马知道要撤回,既然上面的最新的 ID,那么 reset 使用的是下面的 ID)

git reset *******

(2)如果想要撤回,并且删除上次提交所做的修改(请确认场景,慎用),使用 --hard

git reset --hard **********

注意 --hard 参数会抛弃当前工作区的修改;
使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

3、撤回已经 push 的更改(revert 时要清楚对那些文件)

查看本地修改日志:

git log

(如果显示不全按回车键继续加载,按 q 退出;中文可能乱码;越靠上的是越近的修改)

注意:使用 revert 时要注意这里是用上面的版本号,不是下面的版本号,区别于 reset

git revert HEAD        #撤销前一次提交
git revert HEAD^       #撤销前前一次提交
git revert ***********  #撤销指定版本提交。

(1)git revert 不会回退到暂存区中,所以使用 git status 没有变化(体现为没有颜色)
(2)revert 之后是处于 commit 状态,即便再撤回 commit 也不能回复 revert 的那个版本修改的内容。因为 revert 会把之前的修改都删除,此时撤回 commit 仅仅是回到删除后的,未提交的状态。此时提交相当于提交 revert 执行删除。
(3)commit 状态就是说仅仅是你的版本 revert 了,远程没有,如果再 push,就把远程的也 revert 了。

4、修改分支名称 - 错误拼写的分支名

使用:

//git branch -m 错误的分支名 正确的分支名
git branch -m brunch-xpw branch-xpw

如果已经推送此分值,则需要执行几个额外的步骤。需要删除旧分支并推送新分支

git push origin --delete brunch-xpw
git push origin branch-xpw
5、不小心提交到主分支 - 忘记创建新分支

比如说开发了新功能,暂时不应该提交主分支,但是已经提交了。

注意: 此时要回复,就提交所有更改,如果是提交了部分更改,则回复后只有提交的部分,请确认提交了修改或者其他方式保存

git branch branch-xpw
git reset HEAD~ --hardgit checkout branch-xpw

这将创建一个新分支,然后将主分支回滚到该分支

展开阅读全文

常见的SQL Server连接失败错误以及解决方法

04-24

博文地址:[url=http://blog.csdn.net/feixianxxx/archive/2010/04/24/5523922.aspx][/url]rnrn[size=24px]A--SQL Server 不存在或访问拒绝[/size]rn[code=SQL]错误有以下可能:rna.SQL Server名称或者IP地址拼写有误rnb.服务器端网络配置错误rnc.客户端网络配置错误rnrn解决步骤:rn1.检查网络物理连接rnping 服务器名称 或者 ping 服务器ip地址rn===》ping 服务器ip地址失败 :说明物理连接出问题,需要检查硬件设备;需要注意将防火墙关掉,因为它也许会屏蔽你的PING命令rn===》ping 服务器ip地址成功 ping 服务器名称失败:说明服务器名称有问题。如果服务器和客户端不在同一局域网内,很可能无法直接使用服务器名称标志服务器。rnrn2.使用Telnet命令检查SQL Server服务器工作状态rnTelnet 服务器IP地址 14323(默认端口号)rn===>如果有“无法打开连接”的信息,说明你的SQL Server服务没开启,或者你的TCP/IP协议没有启用,或者你的服务器没有在端口1433上监听rnrn3.检查服务器端的网络配置,看是否启用命名管道,是否启用TCP/IP协议rn这个可以在不同版本的SQL Server自带的工具管理器里找到,比如2000是服务器网络使用工具 2008是SQL Server配置管理器rnrn4.检查客户端的网络配置,查看使用的协议rn一般需要启用命名管道;rn[/code]rnrnrn[size=24px]B--用户sa登入失败[/size]rn[code=SQL]错误有以下可能:rn1.你的登入身份为“仅WINDOWS身份登入”rn2.你改完登入方式后,设置账户后没有运行sp_password rnrn第一个原因解决方法:以2000为例:rn 1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server rn 2.展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡 rn 3.在"身份验证"下,选择"SQL Server和 Windows ". rn 4.重新启动SQL Server服务. rn 在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,那就通过修改注册表来解决此问题: rn 1.点击"开始" "运行",输入regedit,回车进入注册表编辑器 rn 2.依次展开注册表项,浏览到以下注册表键: rn [HKEY_LOCAL_MACHINESOFTWARE Microsoft MSSQLServer MSSQLServer] rn 3.在屏幕右方找到名称"LoginMode",双击编辑双字节值 rn 4.将原值从1改为2,点击"确定" rn 5.关闭注册表编辑器 rn 6.重新启动SQL Server服务;rnrn第二个原因解决方法:SQL Server2005 rn1.登陆设置改为,Sql server and windows Authentication方式同时选中,rn具体设置如下:rn manage管理器->windows Authentication(第一次用windows方式进去),->对象资源管理器中选择你的数据服务器--右键>属性>security>Sqlserver and windows Authentication方式同时选中.rnrn2:设置一个Sql server方式的用户名和密码,具体设置如下:rn manage管理器->windows Authentication>new query>sp_password null,'sa123456','sa' 这样就设置了一个用户名为sa ,密码为:sa123456的用户,下次在登陆时,可以用Sql server方式, 用户名为sa ,密码为:sa123456的用户进数据库了.rn3:用SSMS运行的 sp_password null,'sa123456','sa' 然后重新启动SQL;rnrn[/code]rnrn[size=24px]C--连接超时[/size]rn[code=SQL]如果遇到这样的错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错。rn这种情况比较少见,一般发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误。rn有些情况下,由于局域网的网络问题,也会导致这样的错误。rn  要解决这样的错误,可以修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒。rn  具体步骤为:rn  企业管理器中的设置:rn 1、在企业管理器中,选择菜单上的"工具",再选择"选项";rn 2、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;rn 3、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 30。rn 查询分析器中的设置:rn 单击“工具”->"选项"->"连接"; 将登录超时设置为一个较大的数字,连接超时改为0rn[/code]rnrn[size=24px]顺便提下登入的1069错误:[/size]rn[code=SQL]症状:rn 由于更改了你的计算机名字,再次启动时,就会发生“由于登入失败而无法启动服务”的情况。rn解决方法:rn 1.改回你的计算机名字;rn 2.使用控制面板,找到MS SERVER服务,更改启动账号信息到安装时候的信息,再启动服务;rn 3.创建一个用户,专门用于启动服务,安装SQL的时候就用该用户启动SQL Server,这样可以避免频繁更改administrator带来的1069错误。rn 即使已经安装好了SQL Server,你也可以在控制面板下的服务里的服务账号信息更改到那个专门启动的用户。rn[/code] 论坛

Oracle 在Windows下常见错误解决方法!(转)

06-07

Oracle 在Windows下常见的错误解决方法!rnrnOracle 在Windows下常见的错误: rnrn一:我应该是用Windows NT workstation还是Server?或者Professional 还是Server? rnrn 答:对于Oracle而言,这两者都是一样的。没有区别。 rnrn二:我运行svrmgrl,为什么出现协议适配器错误? rnrn 1。确保环境变量Oralce_sid设置正确 rnrn 2。确保相应的OracleServiceSID已经启动 rnrn三:为什么出现connect internal报告insufficient privilege. rnrn 这是因为没有创建密码文件,而在sqlnet.ora里面又不允许使用NTS认证方式。 rnrn 解决办法:rn 1。编辑sqlnet.ora,加入:SQLNET.AUTHENTICATION_SERVICES= (NTS) rnrn 2。或者创建一个密码文件,通过密码文件来进行验证SYSDBA权限的用户 rnrn四:如何在Windows NT/2000上创建一个数据库? rnrn 1.最最简单的办法:使用Oracle database configuration assistant. rnrn 2.使用dbca向导,生成一个创建数据库的脚本,然后慢慢研究。 rnrn 3。完全手工创建 rnrn 大概步骤: rnrn 1。建立相应的目录结构 rnrn 2。编辑initsid.ora,合理配置参数 rnrn 3。创建一个实例Oradim -new -sid usid -intpwd oracle -pfile $ORACLE_HOME/admin/usid/pfile/intitsid.ora rnrn 4。svrmgrl,connect internal, startup nomount, create database.... rnrn 5。运行catalog.sql和catproc.sql,生成数据字典和Plsql支持。 rnrn 6。如果需要别的选项,再分别单独运行相应的cat*.sql脚本 rnrn 7。create tablespace, create rollbacksegment ,create user , rnrn五:NT/2000上如何维护多个实例? rnrn 一个实例对应一个数据库。 rnrn 在NT/2000上可以同时启动多个数据库,为不同的用户/目的服务。 rnrn 管理方法: rnrn 1。通过运行svrmgrl前先设置环境变量oracle_sid来指定管理那个实例 rnrn 2。通过在connect internal@connect_string的时候指定连接到哪个数据库。 rnrn 这个就需要在本地的tnsnames.ora里面指定这两个连接串,而且必须有listener同时为这两个数据库监听。 rnrn六:我如何配置主机命名方法: rnrn 1。在本地的sqlnet.ora里面加入NAMES.DIRECTORY_PATH= (TNSNAMES,hostname),必须有hostname这个入口 rnrn 2。必须能够分解主机名,如果c/s都是windows 系统,没有关系,如果s是Unix,就需要单独配置hosts文件, rnrn 3。在Server的listener的配置点时候,需要指定只能监听1521端口,而且只能为一个数据库监听。而且listener.ora里面必须指定 rnrnglobal_dbname=主机名字。 rnrnrn七:Oracle可以在Windows哪些平台上运行? rnrn Personal Edition:可以在Windows9x/NT/2000上运行。 rnrn 企业版和Workgroup版:可以在NT/2000 的Workstation ,Server,Advanced Server上运行。 rnrn八:安装完Oracle以后,在控制面板的服务里面出现一堆服务,他们都是用来做什么的? rnrn OracleServiceSID:这个是主要服务,只要这个服务启动了,Oracle就对用户可用(这里,服务启动,还要求数据库也启动)。 rnrn Oracle%oracle_home%TNSListener:这个想必大家都知道,就是那个listener了。 rnrn Oracle%oracle_home%ManagementServer:这个是臭名昭著的OMS,最最Buggy的一个产品。 rnrn Oracle%oracle_home%datagather:OEM Diagnoise Pack用的, rnrn Oracle%oracle_home%CMan:就是connection manager rnrn Oracle%oracle_home%CMAdmin:就是connection manager admin? rnrn Oracle%oracle_home%ClientCache:names server的client cache进程 rnrn Oracle%oracle_home%Agent:智能代理,OEM靠这个东西管理远程服务器上的Oracle。 rnrn九:如何让Oracle随着Windows一起启动,一起关闭? rnrn 在控制面板的服务里面,右键属性,选择启动方式为自动或者手动。 rnrn十:如何通过命令行方式启动、关闭数据库,Listener? rnrn 数据库:首先保证服务启动:net start oracleserviceSID. rnrn 然后:set oracle_sid=usid(多个实例的时候需要) rnrn svrmgrl>connect internal/password rnrn svrmgrl>startup rnrn listener: lsnrctl start. rnrn十一:如何设置一个默认的实例?或者说在客户端上sqlplus username/password旧可以直接登陆Oracle数据库,不用填写connect string? rnrn Local,在注册表里面添加,或者在NT/2000的环境变量里面加入local变量。或者在命令行下: rnrn C:>set local=qh rnrn C:>sqlplusw sys/sys 这样旧相当于sqlplus sys/sys@qh rnrn十二:在NT下,我应该使用NTFS还是Fat或者raw设备来存放Oracle数据文件? rnrn十三:怎样在NT下面定期备份? rnrn 可以使用at命令和exp相结合。 rnrn十四:安装完Oracle以后,创建数据库的时候显示:凭证检索失败?怎么办? rnrn 编辑$ORACLE_HOME/network/admin/sqlnet.ora,注释SQLNET.AUTHENTICATION_SERVICES= (NTS)这一行。 rnrnrnrn 论坛

编写java最常见的21种错误

12-25

1.Duplicated Codern  代码重复几乎是最常见的异味了。他也是Refactoring的主要目标之一。代码重复往往来自于copy-and-paste的编程风格。与他相对应OAOO是一个好系统的重要标志。rn2.Long methodrn  它是传统结构化的“遗毒”。一个方法应当具有自我独立的意图,不要把几个意图放在一起。rn3.Large Classrn  大类就是你把太多的责任交给了一个类。这里的规则是One Class One Responsibility.rn4.Divergent Changern  一个类里面的内容变化率不同。某些状态一个小时变一次,某些则几个月一年才变一次;某些状态因为这方面的原因发生变化,而另一些则因为其他方面的原因变一次。面向对象的抽象就是把相对不变的和相对变化相隔离。把问题变化的一方面和另一方面相隔离。这使得这些相对不变的可以重用。问题变化的每个方面都可以单独重用。这种相异变化的共存使得重用非常困难。rn5.Shotgun Surgeryrn  这正好和上面相反。对系统一个地方的改变涉及到其他许多地方的相关改变。这些变化率和变化内容相似的状态和行为通常应当放在同一个类中。rn6.Feature Envyrn 对象的目的就是封装状态以及与这些状态紧密相关的行为。如果一个类的方法频繁用get 方法存取其他类的状态进行计算,那么你要考虑把行为移到涉及状态数目最多的那个类。rn7.Data Clumpsrn  某些数据通常像孩子一样成群玩耍:一起出现在很多类的成员变量中,一起出现在许多方法的参数中,这些数据或许应该自己独立形成对象。rn8.Primitive Obsessionrn  面向对象的新手通常习惯使用几个原始类型的数据来表示一个概念。譬如对于范围,他们会使用两个数字。对于Money,他们会用一个浮点数来表示。因为你没有使用对象来表达问题中存在的概念,这使得代码变的难以理解,解决问题的难度大大增加。好的习惯是扩充语言所能提供原始类型,用小对象来表示范围、金额、转化率、邮政编码等等。rn9.Switch Statementrn  基于常量的开关语句是OO 的大敌,你应当把他变为子类、state或strategy.rn10. Parallel Inheritance Hierarchiesrn  并行的继承层次是shotgun surgery的特殊情况。因为当你改变一个层次中的某一个类时,你必须同时改变另外一个层次的并行子类。rn11. Lazy Classrn  一个干活不多的类。类的维护需要额外的开销,如果一个类承担了太少的责任,应当消除它。rn12. Speculative Generalityrn  一个类实现了从未用到的功能和通用性。通常这样的类或方法唯一的用户是testcase.不要犹豫,删除它。rn13. Temporary Fieldrn  一个对象的属性可能只在某些情况下才有意义。这样的代码将难以理解。专门建立一个对象来持有这样的孤儿属性,把只和他相关的行为移到该类。最常见的是一个特定的算法需要某些只有该算法才有用的变量。rn14. Message Chainrn  消息链发生于当一个客户向一个对象要求另一个对象,然后客户又向这另一对象要求另一个对象,再向这另一个对象要求另一个对象,如此如此。这时,你需要隐藏分派。rn15. Middle Manrn  对象的基本特性之一就是封装,而你经常会通过分派去实现封装。但是这一步不能走得太远,如果你发现一个类接口的一大半方法都在做分派,你可能需要移去这个中间人。rn16. Inappropriate Intimacyrn  某些类相互之间太亲密,它们花费了太多的时间去砖研别人的私有部分。对人类而言,我们也许不应该太假正经,但我们应当让自己的类严格遵守禁欲主义。rn17. Alternative Classes with Different Interfacesrn  做相同事情的方法有不同的函数signature,一致把它们往类层次上移,直至协议一致。rn18. Incomplete Library Classrn  要建立一个好的类库非常困难。我们大量的程序工作都基于类库实现。然而,如此广泛而又相异的目标对库构建者提出了苛刻的要求。库构建者也不是万能的。有时候我们会发现库类无法实现我们需要的功能。而直接对库类的修改有非常困难。这时候就需要用各种手段进行Refactoring.rn19. Data Classrn 对象包括状态和行为。如果一个类只有状态没有行为,那么肯定有什么地方出问题了。rn20. Refused Bequestrn 超类传下来很多行为和状态,而子类只是用了其中的很小一部分。这通常意味着你的类层次有问题。rn21. Commentsrn  经常觉得要写很多注释表示你的代码难以理解。如果这种感觉太多,表示你需要Refactoring。rnrnrn转http://www.javaresearch.org/article/60240.htm 论坛

没有更多推荐了,返回首页