我做了一个git bisect并得到了结果
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我修复了一个文件,并将其提交到我的git存储库.
一段时间后,我发现它已经退步了.我想知道在提交修复已经取出来,所以我想git bisect和git log --all -S TERM,在"期限"是由我的修补程序和出现无处可在项目中添加一个字符串.
我发现git bisect归咎于一个无关的提交,我发现git log --all -S TERM只列出了我添加TERM的提交,并没有列出任何提交已删除它,即使它不再在"master"的文件中.
经过一些手动搜索后,我发现两个分支之间存在合并提交.一个分支有我的修复,一个没有.合并作者选择了没有我修复的分支(奇怪,因为文件中没有冲突).
我的问题是:
git bisect找不到合并更改?关于此限制,我在联机帮助页中没有看到任何内容.有没有不同的方法来使用它会在上面的场景中找到错误的合并?git log --all -S TERM列出合并提交?该联机帮助页显示它列出了"引入或删除实例"的提交.合并提交不会删除我的字符串吗?有没有不同的方法来使用它会在上面的场景中找到错误的合并?git bisect和git log -S是在上述情况下没用,什么是找到坏合并的有效途径?如果没有这些工具,我需要花很长时间才能找到问题的变化.我git bisect最近试图使用,但它只是没有用.树仍然是主人,我没有看到任何输出git bisect.这是我尝试过的:
git bisect start
git bisect bad # no output, tried a couple of times
git bisect good # no output
git bisect reset #-> Already on 'master'
Run Code Online (Sandbox Code Playgroud)
我尝试了两个不同的回购.没工作.关于Ubuntu 9.10的git --version是1.6.3.3任何想法?
我有一个很久以前就已经介绍过的bug了,测试它很痛苦.但是,我强烈怀疑引入该错误的更改发生在一个特定的源代码文件中.
我可以在更改该文件的提交子集上运行git bisect吗?
我有以下内容~/.gitconfig (这只是为了帮助您了解我正在查看的内容):
[alias]
lg = log --graph --all --pretty=format:'%Cred%h %Cgreen(%cr)%Creset - %s %C(yellow)%d %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)
当我这样做时git log,它会向我显示带有分支名称和内容的完整提交树.昨天我发起了一个git bisect,今天我看到refs/bisect/bad我的日志输出中有一个分支.
究竟是什么refs/bisect/bad分支,我该如何摆脱它?
我已经使用Git大约7年了.几天前,我发现了一个让我感到惊讶的行为.我找到了git log,git blame并git bisect展示了这种奇怪的行为.朋友让我知道那个--full-history标志git log解决了我的问题.我想知道,对于我自己的教育,是否有相应的修复git blame和git bisect.
请使用此repo随意查看问题:https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
这是它的日志:
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <ram@rachum.com>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <ram@rachum.com>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| …Run Code Online (Sandbox Code Playgroud) 推理:我试图在Python中实现类似的东西git bisect,但基本上是一个目录列表.
我有一个(长)版本号列表,如下所示:
['1.0', '1.14', '2.3', '3.1', '4']
我有一个函数works(),它取一个版本号,并返回一个值.
[works(x) for x in my_list]看起来像['foo', 'foo', 'foo', 'bar', 'bar']
...... :
但是跑步works()非常昂贵.
我想做一些可以找到变化边界的二等分.
我正在用 git 将 Unity3D 存储库一分为二,每次打开 Unity3D 编辑器检查当前版本是好还是坏时,Unity3D 都会弄脏一些文件,迫使我在继续二分之前进行硬重置。
这是因为如果我不重置,我会得到:
error: Your local changes to the following files would be overwritten by checkout:
Platform/Assembly-CSharp.csproj
Platform/ProjectSettings/ProjectSettings.asset
Please commit your changes or stash them before you switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)
有什么方法可以告诉 git bisect--force在其结账调用中使用,或者避免每次都重置?
该混帐对开提供了钩子执行关于修订二进制搜索,并找出哪些变化打破了设计.是否有Perforce的等效脚本?我做了SO和谷歌搜索没有运气.
2010年3月1日更新:正如道格拉斯·莱德(Douglas Leeder)正确指出的那样,线性历史很容易实现.但是我们确实有多个分支在分支之间进行合并,因此它不像线性历史那样简单.另外,构建和测试代码需要花费一些时间(小时),因此自动测试将很好地让它在没有我回来的情况下运行并且在周末/周末运行.
由于测试失败,我的代码中存在一个可以轻松复制的错误.
到目前为止,我在这种情况下使用了git-bisect,但它只在只有一个git repo时才有用.
就我而言,有7个.
有没有办法做一些像git-bisect但是对于N git存储库?
有一个"容器"回购包含大部分配置.它与特定客户有关.
然后有一个核心应用程序的repo.
然后N repos for这个核心应用程序的插件.
在这种情况下不使用Git子模块.
到目前为止,我还没有使用谷歌回购工具.AFAIK也不能一分为二.