Visual Studio 2013 Github提交死锁

Wal*_*ltz 36 git visual-studio-2013

我和一些朋友正在通过GitHub开展一个项目.我们都在共享相同的分支,这可能是也可能不是一个好主意.

我编辑了一些代码并提交了更改.我去推送GitHub(我正在使用Visual Studio 2013和它内置的Git工具),但是我收到了这个错误:

"有新的远程变化.你必须在推动之前拉动它们."

所以我试图拉远程更改,我收到此错误:

"发生错误.详细消息:libgit2引发了一个错误.Category = 21(MergeConflict).9个未提交的更改将被合并覆盖"

我试图更改分支,以便我可以推送我的更改,然后将它们与第一个分支合并,但我收到此错误:

"无法切换到master,因为存在未提交的更改.在切换分支之前提交或撤消更改.有关详细信息,请参阅"输出"窗口.

我不知道该怎么做,除非可能将我的更改通过电子邮件发送给我的一位朋友并让他们推动我的更改.但是,我不知道我的本地提交会发生什么.

编辑

问题得到解决.在确保同步所有提交后,我打开了git bash并撤消了远程提交.经过几次尝试后,我回到Visual Studio,发现它注册了合并.我解决了所有冲突的文件,并能够推动项目.

感谢所有回答的人!

Dav*_*SFT 36

听起来很蠢,我只是去了命令行,它运作起来了.

  1. Git状态
  2. Git拉
  3. Git推

一切都很好.

如果我在Visual Studio中做了同样的事情,它就不起作用了.去搞清楚.

  • 对.我经常遇到这种情况.VS拒绝做某事但通过控制台没问题. (3认同)

dmc*_*gin 24

当使用Visual Studio的Git提供商(VS 2013,VS2015),这种情况也可能出现在一个本地提交的方案被执行,但是,试图从服务器到拉和合并,错误消息时:

"未提交的更改将被合并覆盖"

仍然显示,并取消拉动作.

这可能是因为本地,有Untracked文件不是本地Commit的一部分,但是是远程Pull的一部分; 合并解决方案无法处理此方案.

通常,当某些文件(如T4模板输出)包含在一个工作站上的Commit中但不包含在其他工作站上时,会发生这种情况.

此外,这可能发生在Visual Studio 2015中,当处理MVC6项目时(在撰写本文时),当wwwroot文件夹中的文件已包含在一个工作站上的Commit中,但不包含在另一个工作站上时(一个可能的原因是尝试使用同一服务器存储库的工作站上的.gitignore文件不同.

解决:

a)查看团队资源管理器>更改对话框.

b)验证实际驻留在服务器分支中的任何未跟踪文件是否包含在您的提交中; 要执行此操作,请右键单击并选择"添加".或者,如果您希望覆盖它们,可以选择"删除".请注意谨慎.

c)执行Commit,然后执行Pull,并执行所需的任何合并冲突解决方案.

d)执行推送以更新远程存储库.


Jar*_*Par 15

现在你正在尝试基本上对git merge你的分支中的uncommited更改做一个(pull只是fetch + merge).Git理所当然地抱怨这样的操作会覆盖分支中未经修改的更改.

要继续执行pull操作,您需要从工作目录中删除此未提交的更改.有几种方法可以做到这一点

  1. 将它们提交到本地存储库
  2. 存储它们,运行拉动操作,然后在拉动之上取消它们
  3. commit,fetch,rebase然后合并

如果你是git的新手,我可能会从选项#1开始.

  • 如何将未提交的更改提交到本地存储库?你怎么知道这些变化在哪里? (5认同)