我是 TFS 和 GIT 的新手,并将现有的 Lightswitch 项目迁移到 TFS。我使用 GIT 存储库在 TFS 中启动了一个新项目并加载了我的项目,但在重命名父目录后几乎立即在主文件上损坏了一些东西。我试图恢复到我最初加载的提交(我可以下载 zip 并确认它按预期工作),但最终只是添加了一些其他提交更改,这些更改并没有让我回到原来的状态。
作为序言,当我克隆到 Visual Studio 时,我相信它会 pull 最新的 sln,除非我从 zip 中 pull 。但是使用 zip,我无法推送提交(或者至少我认为)。我现在意识到 >:P 我是个白痴,应该立即开始分支,但长话短说,TFS 的第一次加载没有 pull 入 sln,因为我从本地 git pull 到远程服务器,所以我不得不创建基于加载的 git 历史的新解决方案。所有这一切在升级 VS 2013 >> 2015 以匹配 2015 TFS 服务器之后。
我尝试使用来自“git log”的长 ID 来尝试“git revert bf4d79..26aa08”,但它只是在周一添加了前两个。我觉得我走错了方向,害怕我会扼杀我数月的项目。最坏的情况是我从 TFS 中删除项目并重新开始。
顺便说一句,我是这方面的唯一开发人员,并且拥有对它的所有管理权限。如果您没有猜到,我是从业务方面自学的,但现在已经发展了几年。
显然非常感谢任何帮助,我在这一切中学到了一些宝贵的经验教训。 谢谢!
这是我遇到的困难的更好描述。
**************已回答******************
感谢 Terje Sandstrøm!工作起来很有魅力。
git reset --hard 4358ca58
git push -f origin master
另外,弄清楚了为什么从 git 到 TFS 的初始传输没有携带 sln 文件。 sln 保存在 git tracked 文件夹之外。
从错误中吸取教训可能很难,但绝对可以防止您重蹈覆辙。
最佳答案
由于您是该 git 存储库的唯一开发人员,您可以重写远程存储库的历史记录,也就是您在 TFS 服务器上拥有的历史记录。
首先确保你的机器上安装了 Git,查看团队资源管理器下的设置,Git 部分,如果那里有安装第 3 部分 git 扩展,请执行此操作。
然后:
转到命令行,使用“更改”中心下的“操作”,然后选择“打开命令提示符”。
按如下方式进行 git reset 操作:
git reset --hard 4358ca58
这会将您的主指针和工作区移回您在上面标记的提交。 (例如,参见 Revert to a commit by a SHA hash in Git? )
然后强制将其推送到 Remote - 请注意,仅当您确定没有其他人在使用您的 Remote 时才执行此操作。
git push -f origin master
(例如,参见 Force "git push" to overwrite remote files)
现在你的主人回来了, Remote 同步了。正如您自己所说,现在您可以分支并进行实验。
关于git - 在 TFS 上回滚 GIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568495/