愚蠢的 GIT GUI 问题
Stupid GIT GUI questions
我现在觉得自己很傻。我使用过许多版本控制应用程序,但 git 没那么多。我已经阅读了很多帖子,但比以往任何时候都更加困惑,因为许多(显然是正确的)答案使用命令提示符和我理解的假设 GIT 比我理解的要好得多。
我在 windows 从事一个多人签入代码的项目。我们使用 Git Gui,但我也安装了 Git Bash。到目前为止,我所需要做的就是提交、推送、拉取和合并,生活很美好。
我希望能够通过提交会话回滚我的代码提交会话,直到我可以返回到一个版本,该版本是经过测试且完整的模块正在运行。我不知道密码是什么时候被破解的。
我不想修改主存储库,而是我的本地版本。找到更改后,我想复制文件,恢复到当前版本,然后将复制文件的差异应用到当前版本并签入。
我尝试了多种选择,但 none 似乎允许我这样做。而且我也不想搞砸主存储库。
我不得不相信这很简单,只是不确定如何去做。是的,我可以花几天时间学习 Git 的复杂性,但现在,我必须让代码正常工作,不能破坏主存储库,不能浪费几天时间弄清楚 git./git gui/etc. (这确实是正确的方法 - 但人们现在需要这段代码(再次)工作。
谢谢!
Crashmstr 的评论是最好的方法:
http://git-scm.com/docs/git-bisect
基本上你开始平分
$ git bisect start
然后声明你的"bad version"
$ git bisect bad # Current version is bad
然后声明你最后一个已知的 "good version"
$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
# tested that was good
然后你可以通过二分法测试每个版本,直到找到中断提交。
如果您不熟悉二分法,基本上它是将 space 分成两半,直到您获得所需的值,例如
[ bad commit in here ]
[[ good ][ bad ]]
[[ good ][[ bad ][ good ]]
直到你得到你想要的实际提交。
更简单的方法是
git log
然后一次检查每个提交,直到找到损坏的那个。
例如
$ 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
直到你找到坏掉的那个。
我现在觉得自己很傻。我使用过许多版本控制应用程序,但 git 没那么多。我已经阅读了很多帖子,但比以往任何时候都更加困惑,因为许多(显然是正确的)答案使用命令提示符和我理解的假设 GIT 比我理解的要好得多。
我在 windows 从事一个多人签入代码的项目。我们使用 Git Gui,但我也安装了 Git Bash。到目前为止,我所需要做的就是提交、推送、拉取和合并,生活很美好。
我希望能够通过提交会话回滚我的代码提交会话,直到我可以返回到一个版本,该版本是经过测试且完整的模块正在运行。我不知道密码是什么时候被破解的。
我不想修改主存储库,而是我的本地版本。找到更改后,我想复制文件,恢复到当前版本,然后将复制文件的差异应用到当前版本并签入。
我尝试了多种选择,但 none 似乎允许我这样做。而且我也不想搞砸主存储库。
我不得不相信这很简单,只是不确定如何去做。是的,我可以花几天时间学习 Git 的复杂性,但现在,我必须让代码正常工作,不能破坏主存储库,不能浪费几天时间弄清楚 git./git gui/etc. (这确实是正确的方法 - 但人们现在需要这段代码(再次)工作。
谢谢!
Crashmstr 的评论是最好的方法: http://git-scm.com/docs/git-bisect
基本上你开始平分
$ git bisect start
然后声明你的"bad version"
$ git bisect bad # Current version is bad
然后声明你最后一个已知的 "good version"
$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
# tested that was good
然后你可以通过二分法测试每个版本,直到找到中断提交。
如果您不熟悉二分法,基本上它是将 space 分成两半,直到您获得所需的值,例如
[ bad commit in here ]
[[ good ][ bad ]]
[[ good ][[ bad ][ good ]]
直到你得到你想要的实际提交。
更简单的方法是
git log
然后一次检查每个提交,直到找到损坏的那个。
例如
$ 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
直到你找到坏掉的那个。