我现在觉得很蠢。我使用了许多版本控制应用程序,但没有那么多git。我已经阅读了很多帖子,但是比以往任何时候都更加困惑,因为许多(显然是正确的)答案使用命令提示符和我比GIT理解GIT要好得多的假设。
我在一个项目的Windows上工作,有多个人检查代码。我们使用Git Gui,但我也安装了Git Bash。到目前为止,我所需要做的只是提交,推动,拉动和合并,生活是美好的。
我希望能够通过提交会话回滚我的代码提交会话,直到我可以回到一个版本,这是一个经过测试且完整的模块正在运行。我不知道代码什么时候被破坏了。
我不想修改主存储库,而是我的本地版本。一旦找到更改,我就想复制文件,恢复到当前版本,然后将复制文件中的差异应用到当前版本并检查它。
我尝试了很多选项,但似乎没有人允许我这样做。而且我也不想搞砸主存储库。
我不得不相信这很简单,只是不知道怎么做。是的,我可以花几天时间学习Git的复杂性,但是现在,我必须让代码工作,而不是破坏主存储库,并且不会失去几天来搞清楚git./git gui / etc。 (这确实是正确的方法 - 但是现在人们需要这个代码再次工作。
谢谢!
答案 0 :(得分:3)
Crashmstr的评论是最好的方式: http://git-scm.com/docs/git-bisect
基本上你开始用
分开$ git bisect start
然后声明你的“坏版本”
$ git bisect bad # Current version is bad
然后声明你最后一次被称为“好的版本”
$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
# tested that was good
然后你可以通过二分测试每个版本,直到找到破解提交。
如果你不熟悉二分法,基本上它会将一个空间分成两半,直到你得到你想要的值,例如。
[ bad commit in here ]
[[ good ][ bad ]]
[[ good ][[ bad ][ good ]]
直到你得到你想要的实际提交。
更简单的方法是
git log
然后一次一个地检查每个提交,直到找到损坏的那个。
E.g。
$ git log
commit 63cd158599d77ac73abcefd087a2f7bdfdb171cb
Author: Jordan
Date: Fri May 1 02:12:46 2015 -0700
Start look at query builder
commit d0ca01f7c7c2e7a2153fbe3c980f79022f096aad
Author: Jordan
Date: Thu Apr 30 23:48:38 2015 -0700
TODO: add cloudsearch filtering for inactive
然后,您可以在不使用
更改任何内容的情况下签出旧提交git checkout 63cd15
直到找到破碎的那个。