git - 在 TFS 上回滚 GIT

标签 git tfs version-control visual-studio-2015

我是 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 服务器之后。

enter image description here

我尝试使用来自“git log”的长 ID 来尝试“git revert bf4d79..26aa08”,但它只是在周一添加了前两个。我觉得我走错了方向,害怕我会扼杀我数月的项目。最坏的情况是我从 TFS 中删除项目并重新开始。

顺便说一句,我是这方面的唯一开发人员,并且拥有对它的所有管理权限。如果您没有猜到,我是从业务方面自学的,但现在已经发展了几年。

显然非常感谢任何帮助,我在这一切中学到了一些宝贵的经验教训。 谢谢!

这是我遇到的困难的更好描述。

enter image description here

enter image description here

**************已回答******************

感谢 Terje Sandstrøm!工作起来很有魅力。

git reset --hard 4358ca58

git push -f origin master

另外,弄清楚了为什么从 git 到 TFS 的初始传输没有携带 sln 文件。 sln 保存在 git tracked 文件夹之外。

从错误中吸取教训可能很难,但绝对可以防止您重蹈覆辙。

enter image description here

最佳答案

由于您是该 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/

相关文章:

apache - 在我的 GoDaddy CentOS 专用服务器上安装 Subversion 后,如何配置和访问我的 Subversion 存储库

git - 为什么 Git 不提示我输入密码?

Windows 自定义 git 命令

git - 从提交中恢复特定文件

tfs - 无法下载 TFS 2013 生成过程模板,并且生成无法初始化

tfs - 将 TeamCity 连接到 Visual Studio Online

Git:仅 merge 一次提交

c# - 以编程方式授权给 tfs 的错误

git - 不要忽略 git sourcetree 中的文件

svn - Cornerstone SVN 错误 - 无法提交文件