Git 半还原到主控并检查更改

Git 半还原到主控并检查更改,git,atlassian-sourcetree,Git,Atlassian Sourcetree,有没有一个好方法可以轻松地检查我当前的项目与主分支的区别?我想以某种方式再次拉主控和“解决冲突”,以再次检查我所做的更改 我在做一个主程序之外的辅助项目——我的项目从未合并到主程序,但主程序是自己开发的。我现在有一个笨拙的bug,我想看看我所做的所有更改,看看它在哪里。我不知道是我做了什么,还是对master做了某种核心改变。我不想撤销所有的更改,所以我希望有一种方法可以找到类似于我上面描述的方法 编辑:我可能应该注意到,我所做的99%的工作都在独立的文件中,不会合并冲突-因此,这并不像我所做的

有没有一个好方法可以轻松地检查我当前的项目与主分支的区别?我想以某种方式再次拉主控和“解决冲突”,以再次检查我所做的更改

我在做一个主程序之外的辅助项目——我的项目从未合并到主程序,但主程序是自己开发的。我现在有一个笨拙的bug,我想看看我所做的所有更改,看看它在哪里。我不知道是我做了什么,还是对master做了某种核心改变。我不想撤销所有的更改,所以我希望有一种方法可以找到类似于我上面描述的方法


编辑:我可能应该注意到,我所做的99%的工作都在独立的文件中,不会合并冲突-因此,这并不像我所做的版本更改那么简单。我需要找到1%的代码将我的代码绑定到主项目本身。

为了方便起见,我建议在这里使用
bisect
命令

当然,您可以一个接一个地签出您的提交,从
头部向后,直到找到断点,但是
对分
,旨在简化这一过程。通过这种方式,数百次提交可以相当快地分解为几个步骤

基本上,它使用二分法搜索的原则,在两个时间点之间(在您的情况中,从现在到您分支主控的时间点之间)检查提交,让您运行您需要的任何测试,然后等待您选择是否认为提交“不好”(如果您的错误在时间线的这一点上存在),或者“好”(如果bug还没有出现),然后它会重复这个过程,直到你找到了带来麻烦的提交

# to start the search
git bisect start

# to tag the present commit as "good"
git bisect good
# to tag the present commit as "bad"
git bisect bad

# to exit bisect mode and return to just before "bisect start"
git bisect reset 
(这里使用的标签是口语化的,当然没有涉及真正的git标签,既不是轻量级的,也不是带注释的)


查看(其他一些
bisect
的子命令很方便,如
bisect log
),深吸一口气,抓起前照灯,开始行动。

我运行了对分命令,但它似乎没有做任何事情。我可能没有抓住要点。我不确定在第二个提示下键入什么。我是否将当前提交标记为“坏”并向后工作?此外-我没有一次从master分支。我从master和p分支上传了master的最新更新。master是由一个社区团队更新的,该团队与我的个人副本和更改无关。因此,我在提交期间多次从master中提取,我认为错误就在那里,因为他们可能改变了某些工作方式。你链接了文档-我应该在那里查看。它是e更好地解释命令谢谢我会尝试这个。我希望sourcetree中会有一些更友好的UI,但我对控制台的东西不完全过敏。谢谢!我发现了错误。我对git有点新手,但有一次我因为抛出错误而注释掉了一些奇怪的格式化东西。我我认为这实际上是一个合并冲突,我应该选择一个或另一个选项-因此注释掉这些奇怪的行会导致重复代码,这导致了我看到的行为。这就是错误发生的地方。出于某种原因,sorcetree和intellij都没有将其标记为合并冲突,所以我不知道我看到了什么本来应该这样做的。