使用SmartGit在本地设置Git时出现推/拉错误

使用SmartGit在本地设置Git时出现推/拉错误,git,version-control,smartgit,Git,Version Control,Smartgit,我想在本地PC上开始使用DVCS和Git进行项目。这是一个私人项目,允许我跟踪更改和版本,将来允许外部开发人员参与项目。 现在我只想坚持本地设置。 我正在使用SmartGit作为我的git客户端 这是我的设置过程: 打开SmartGit->Repository->添加或创建 将路径添加到我的当前项目文件夹 在“存储库”窗格中选择项目 阶段(所有文件)->提交 分支设置为“主” 我希望这是我的中央存储库,用于将文件推送到其中并进行备份 现在创建我的工作存储库: 存储库->克隆->本地Git存储库

我想在本地PC上开始使用DVCS和Git进行项目。这是一个私人项目,允许我跟踪更改和版本,将来允许外部开发人员参与项目。 现在我只想坚持本地设置。 我正在使用SmartGit作为我的git客户端


这是我的设置过程:

  • 打开SmartGit->Repository->添加或创建
  • 将路径添加到我的当前项目文件夹
  • 在“存储库”窗格中选择项目
  • 阶段(所有文件)->提交
  • 分支设置为“主”
  • 我希望这是我的中央存储库,用于将文件推送到其中并进行备份

    现在创建我的工作存储库:

  • 存储库->克隆->本地Git存储库->我刚刚创建的repo的路径
  • 包括子模块,获取所有头和标签
  • 我的新回购协议现在已创建


    现在正在测试推动中央回购的变化:

  • 导航到工作回购中的文本文件(在回购窗格中),然后打开并编辑它
  • 保存更改->阶段->提交并推送:
  • 错误:

    Error not all refs have been pushed -> 'master' rejected (non-fast-forward)
    
    根据我的研究,我尝试以下方法:

  • 在工作休止拉->重新基准(建议按照工具提示的方式)
  • 从路径/To/Central/Repo获取
  • 现在重试:

  • 推送->当前分支“主”
  • 再次:

    Error not all refs have been pushed -> 'master' rejected (non-fast-forward)
    
    "Already up-to-date"
    
    我现在尝试修复错误:

  • (工作回购)合并->主“更改”->创建合并提交->快进
  • 信息:

    "Already up-to-date"
    
  • 合并->主控“更改”->创建合并提交
  • 再次:

    Error not all refs have been pushed -> 'master' rejected (non-fast-forward)
    
    "Already up-to-date"
    
    然后我尝试从中央回购中撤出:

  • (中央回购)拉动->设置远程->路径/到/工作/回购
  • 不能拉只能取
  • 当我现在尝试推送更改时仍然存在相同的错误

    我正在努力寻找如何推动我的中央回购协议


    提前谢谢

    您使用的是什么版本的Git?在GitV2.0之前,默认行为是在推送时将所有分支推送到远程。可能是您所在的分支以外的分支与远程服务器已过期

    如果低于2.0,并且有任何其他分支可能已过期,请尝试从命令行键入以下内容:

    git config push.default simple
    

    这将告诉Git只推送您当前所在的分支。然后尝试另一次推送,看看这是否解决了问题。

    我怀疑您的本地
    主机可能没有跟踪
    原点/master
    。此外,您的中央存储库应该是空的,因此我建议重新开始:

  • 确保您的中央存储库是空的。因此,从命令行使用'git init--bare'创建一个新的存储库
  • 使用SmartGit:

  • 使用clone从中央存储库创建克隆。这将发出警告,如
    警告:您似乎克隆了一个空存储库。

  • 将现有源/任何内容移动到克隆中并提交。这将自动将您置于
    master

  • 最后,调用Push并确认配置
    master
    origin/master
    之间的跟踪


  • 我没有使用过任何git gui客户端,我发现使用git更难,速度也更慢。尝试打开git-bash到您的git-repo文件夹,然后运行
    $git-fetch
    $git-merge--no-ff-origin/master
    。然后,您应该能够推送(如果合并中没有冲突)
    $git push origin master
    这似乎有效,谢谢!如果导航到我创建为裸机的中央存储库,则它不包含任何文件。但是在文件夹上运行“git ls tree-r master”会将文件列为存在,这是正常的git行为吗?Bare意味着存储库没有工作树。不过,您可以在裸存储库中打开日志。在这里,在文件视图中,您可以切换显示未更改的文件,这将为您提供与git ls tree-r相同的输出