我是TFS和GIT的菜鸟,并将现有的Lightswitch项目迁移到TFS。我在TFS中启动了一个带有GIT仓库的新项目并加载了我的项目,但在重命名父目录后,几乎立即在主文件上损坏了一些东西。我试图恢复到我最初加载的提交(我可以下载zip并确认它按预期工作),但最后只是添加一些其他提交更改,这些更改不会让我回到原始状态。
作为序言,当我克隆到Visual Studio时,我相信它会拉动最新的sln,除非我从拉链拉出来。但是使用zip,我无法推送提交(或者至少我认为)。我现在意识到>:PI是一个白痴,应该立即开始分支,但长话短说,TFS的第一次加载没有拉入sln因为我从我的本地git拉到远程服务器,所以我不得不根据加载的git历史记录创建一个新的解决方案。升级VS 2013后的所有这些>> 2015年与2015年TFS服务器相匹配。
我尝试使用'git log'中的长ID来'git revert bf4d79..26aa08',但它只是在周一添加了前两个。我觉得我走向了错误的方向,我担心我会杀了我的多月项目。最糟糕的情况是我从TFS中删除项目并从头开始。
顺便说一下,我是这方面唯一的开发人员并且拥有它的所有管理员权限。如果你没有猜到,我从商业方面自学,但现在已经发展了几年。
显然非常感谢任何帮助,我在这一切中学到了一些宝贵的经验教训。 谢谢!
以下是我遇到困难的更好画面。
**************回答******************
谢谢TerjeSandstrøm!工作就像一个魅力。
git reset --hard 4358ca58
git push -f origin master
另外,弄清楚为什么从git到TFS的初始传输没有携带sln文件。 sln被保存在git跟踪文件夹之外。
从错误中吸取教训可能很难,但它肯定会阻止你重复它。
答案 0 :(得分:7)
由于您是该git repo上唯一的开发人员,因此您可以重写远程存储库的历史记录,即TFS服务器上的历史记录。
首先确保您的计算机上安装了Git,请参阅团队资源管理器,设置,Git部分,如果有安装第3部分git扩展,请执行此操作。
然后:
转到命令行,使用下面的Action ..说更改集线器,然后选择打开命令提示符。
执行git重置如下:
git reset --hard 4358ca58
这会将主指针和工作区移回上面标记的提交。 (例如,见Revert to a commit by a SHA hash in Git?)
然后用力将其推到遥控器上 - 注意,只有当你确定没有其他人在使用你的遥控器时才这样做。
git push -f origin master
(例如,见Force "git push" to overwrite remote files)
现在你的主人回来了,遥控器是同步的。正如你自己说的,现在你可以分支并进行实验。