愚蠢的GIT GUI问题

时间:2015-05-01 17:30:19

标签: c# windows git-bash git-gui git-revert

我现在觉得很蠢。我使用了许多版本控制应用程序,但没有那么多git。我已经阅读了很多帖子,但是比以往任何时候都更加困惑,因为许多(显然是正确的)答案使用命令提示符和我比GIT理解GIT要好得多的假设。

我在一个项目的Windows上工作,有多个人检查代码。我们使用Git Gui,但我也安装了Git Bash。到目前为止,我所需要做的只是提交,推动,拉动和合并,生活是美好的。

我希望能够通过提交会话回滚我的代码提交会话,直到我可以回到一个版本,这是一个经过测试且完整的模块正在运行。我不知道代码什么时候被破坏了。

我不想修改主存储库,而是我的本地版本。一旦找到更改,我就想复制文件,恢复到当前版本,然后将复制文件中的差异应用到当前版本并检查它。

我尝试了很多选项,但似乎没有人允许我这样做。而且我也不想搞砸主存储库。

我不得不相信这很简单,只是不知道怎么做。是的,我可以花几天时间学习Git的复杂性,但是现在,我必须让代码工作,而不是破坏主存储库,并且不会失去几天来搞清楚git./git gui / etc。 (这确实是正确的方法 - 但是现在人们需要这个代码再次工作。

谢谢!

1 个答案:

答案 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

直到找到破碎的那个。