中国服务器网

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

git在Windows上:致命的:协议错误:坏行字符:@ –

我在Windows上使用SourceTree + Git没有任何问题。 我能够从命令(terminal/ BASH)使用git命令。 我更喜欢用git推/拉等terminal。不幸的是,重新安装我的机器(服务器/ git是相同的)后,我得到这个痛苦的错误。 在新机器上,我安装了Git 1.9.5(Git-1.9.5-preview20141217.exe),并configuration为只使用BASH,并使用正确的SSH密钥文件进行plink。 我可以做git log我的仓库,但是git pull或者git push会给出这个错误: me@NEW-MACHINE /c/Workspace/project (master) $ git pull fatal: protocol error: bad line length character: @- ERROR: Problem parsing the command line arguments. 当然,我search了很多关于“致命的:协议错误:坏行长度”的文章。 但是,找不到任何线索。 有趣的是,在SourceTree上,我可以做成git pull或push 。 我只在BASHterminal得到这个错误。 请注意,SourceTree不使用embedded式的git。 以下是我的调查到目前为止: 我安装了旧版本的git(1.8.x),仍然出现错误。 移动.bashrc,但不好。 显然,SourceTree并不像SourceTree那样使用embedded式Git。 服务器在Github(企业,私人)。 我在使用相同的git存储库/服务器的Linux上使用任何git命令没有问题。 我的线索是从错误消息中的<newline>@-<newline> 。 这更像是一个Windows / BASH特定问题。 我不知道是什么原因导致“@ – ”。 […]

覆盖文件没有损坏的文件的风险

所以经常我的应用程序想保存文件以后再加载。 最近因为崩溃而倒霉了,我想以这样一种方式编写操作,即保证有新的数据或原始数据,但不会有混乱。 我的第一个想法是做一些事情(保存一个名为example.dat的文件): 为目标目录提供一个唯一的文件名,例如example.dat.tmp 创build该文件并写入我的数据。 删除原始文件(example.dat) 重命名(“移动”)临时文件到原来的位置(example.dat.tmp – > example.dat)。 然后在加载时应用程序可以遵循以下规则: 如果没有“example.dat”而没有“example.dat.tmp”,首先运行/新build项目,这样就加载默认/新build文件。 如果“example.dat”没有“example.dat.tmp”,则加载example.dat(正常载入大小写) 如果存在“example.dat.tmp”,则为用户提供潜在恢复数据的机会。 如果还存在“example.dat”,则不要在没有明确的用户常量的情况下覆盖它。 但是,我做了一些小小的研究后发现,除了操作系统caching(我可以用文件刷新方法覆盖)之外,有些磁盘驱动器仍然可以在内部caching,甚至可能对操作系统说谎,因此4可以完成,写入不实际写入,如果系统closures,我已经丢失了我的数据… 我不确定磁盘问题实际上是由应用程序解决的,但是正确的事情上面的一般规则是? 我应该保留一个旧的文件恢复副本,以确保更长的时间,有关这些事情的指导方针是什么(例如,可接受的磁盘使用情况,用户应该select,放置这些文件的位置等)。 另外我应该如何避免潜在的冲突用户和其他程序“example.dat.tmp”。 我记得有时候从其他软件中看到“〜example.dat”,这是一个更好的约定吗?