如何在Team Explorer中使远程仓库和本地仓库的Master分支重新同步?
情况: 我在远程git仓库中的VSTS中有我的应用程序代码。我通常在我的本地(达拉斯)计算机上使用Master做所有工作,并使用VS 2017 Team Explorer“ SYNC”定期将其同步到VSTS上的远程仓库。
8月25日,我对代码进行了一些更改,但尚未提交。 8月26日,我不得不去奥斯汀进行了为期三天的访问。在奥斯汀期间,我不得不对代码进行一些更改,因此我将VSTS的存储库克隆到了我的笔记本电脑上,进行了更改,然后进行了提交(请参阅下面的日志中的8af),然后重新同步回VSTS。
8月29日回到达拉斯时,我进入了本地计算机,意识到我有一些未提交的工作并提交了它(请参阅下面的日志中的提交310)。然后,我尝试在VSTS上与主服务器同步,并收到“ 提示在后面”错误(请参见下面的日志)。
尝试拉动并出现另一个错误:
拉操作失败。 该请求将覆盖您对以下3个文件的本地更改:
.vs/slnx.sqlite
/Account/Logout.cshtml
/App_Data/RESTORE BackupFile to SQL 2016 localdb.sql
从那时起,尝试遵循(有用的?)提示和错误消息,我陷入了更深的麻烦,添加了更多本地提交,现在很困惑。 VS 2017中Git集成的美丽之处在于,它使您不必对git有所了解。那也是那种设置的罪恶!当我不得不在VS 2017的抽象之下工作时,我非常无知。
我想以原始历史和达拉斯本地仓库中的历史为结尾
Commit ORIGIN Local Notes
3d6 X(HEAD) X(HEAD)
db9 X X
5e6 X X
310 X X
8af X X
aa8 X X
与当前状态相反:
Commit ORIGIN Local
3d6 X(HEAD)
db9 X
5e6 X
310 X
8af X(HEAD)
aa8 X X (common parent of 8af and 3d6)
希望此说明和下面的(已编辑)日志信息将帮助某人帮助我摆脱困境。原始的git文档是古怪且难以理解的。我尝试了“还原并重置”(不完全了解它们),却一无所获,但遇到了麻烦。
我的情况似乎不适合我通过谷歌搜索和堆栈溢出找到的任何解决方案。
我最好的猜测是git push -f
。我是唯一使用此应用程序的人。但是,我担心所有有关git push -f危险的警告。如果在上述情况下执行了git push -f
,那么什么会被覆盖?我猜这将是commit 8af(仅在原始主机上,并且具有将被推送的最近提交的公共父代。这是正确的猜测吗?
我会很高兴有人告诉我我需要在这里做什么。
已编辑(“合并”)日志 (所有提交,所做的更改等都在Master分支中) C:\ Users \ rrrob \ Source \ VS2017Rafino> git log
提交3d6(HEAD-> master)不起源 2018年8月30日星期四08:38:18 -0500
commit db9 2018年8月29日星期三16:01:53 -0500 没有起源
提交5e6 2018年8月29日星期三15:08:24 -0500 不是起源
8月29日返回达拉斯,在Master中提交了之前未提交的更改,并尝试进行同步。 收到“在推送到远程存储库时遇到错误:拒绝更新,因为当前分支的尖端位于其远程副本的后面,因此拒绝更新。在再次推送之前集成远程更改。” 尝试从源中拉出(可能是Fetch?),并且收到进一步的错误:“拉操作失败。” commit 310 Wed Aug 29 15:05:47 2018 -0500 不是起源(父母是aa8)
26 AUG前往奥斯汀,克隆了仓库,进行了主服务器更改,已提交并与原服务器同步 commit 8af Tues 8月28日12:56 5:56 PM(UTC)不在达拉斯本地仓库(父母是aa8)
在团队资源管理器中最后一次成功进行同步 commit aa8 Thu Aug 16 15:10:06 2018 -0500 在达拉斯及其起源
commit a8b Tue Aug 14 10:32:43 2018 -0500
答案 0 :(得分:0)
经过大量谷歌搜索和非常恐惧(因为我找不到适合自己情况的东西),我做了以下事情:
(1)我做了一个git stash将更改存储到stash中
(2)进行了一次拉动-产生2个冲突(从VS 2013转到VS 2017后,这两个sql lite文件突然出现在我的解决方案中)
(3)通过对它们进行git add解决了2个“两者均已修改”的冲突
(4)提交了所有结果
(5)返回VS Team Explorer进行同步-成功!
没有技巧,只是纯粹的,愚蠢的运气。至少对我而言,对git适当的任何尝试都是一次艰辛的旅程。
我怀疑这是因为我对 Master分支中的克隆存储库(在旅途中)进行了更改。我可能应该在 new分支中这样做,将新分支推到远程,然后发出拉取请求,以提醒我一旦回到自己的家乡就合并新分支。 / p>
另一方面,我确实相信当MS引入SQLlite DB来跟踪IDE状态时,他们没有考虑到它对Team Explorer的影响。即使我在忽略文件中有.VS目录,对数据库的更改也始终显示在Team Explorer的“更改”窗口中。令人困惑!