半恢复到 master 并检查更改
Semi-reverting to master and checking changes
有什么好方法可以轻松查看我当前的项目与 master 分支有何不同?我想以某种方式再次拉动 master 和 'resolve conflicts' 来仔细检查我所做的更改。
我正在做一个 master 的副项目 - 我的项目从未合并到 master,但 master 是自己开发的。我现在有一个棘手的错误,我想检查我所做的所有更改以查看它在哪里。我不知道这是我做过的事情还是对 master 进行了某种核心更改。不过,我不想撤消我的所有更改,所以我希望有一种方法可以找到类似于我上面描述的方法。
编辑:我可能应该注意到,我所做的 99% 的工作都在单独的文件中,不会合并冲突 - 所以这并不像我所做的版本更改那么简单。我需要找到将我的代码与主项目本身联系起来的那 1% 的代码。
为了方便起见,我建议在这里使用 bisect
命令。
当然,您 可以 逐一检查您的提交,从 HEAD
倒退直到找到断点,但是 bisect
, 旨在简化这个过程。通过这种方式,可以将数百个提交相当快地分解为几个步骤。
基本上,它使用二分法搜索的原则,检查两个时间点之间的提交(在你的情况下,从现在到你分支 master 的时间点),让你 运行 无论您需要什么测试,然后等待您选择将提交视为 "bad"(如果您的错误出现在时间线的这一点),或 "good"(如果错误不是 还显示)。然后它迭代地重复该过程,直到您找到带来麻烦的提交。
# 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
(tag 在这里以口语形式使用,当然没有涉及真正的 git 标签,既没有轻量级也没有注释)
看看doc(bisect
的其他一些子命令很方便,比如bisect log
),深吸一口气,拿起你的头灯,继续努力.
有什么好方法可以轻松查看我当前的项目与 master 分支有何不同?我想以某种方式再次拉动 master 和 'resolve conflicts' 来仔细检查我所做的更改。
我正在做一个 master 的副项目 - 我的项目从未合并到 master,但 master 是自己开发的。我现在有一个棘手的错误,我想检查我所做的所有更改以查看它在哪里。我不知道这是我做过的事情还是对 master 进行了某种核心更改。不过,我不想撤消我的所有更改,所以我希望有一种方法可以找到类似于我上面描述的方法。
编辑:我可能应该注意到,我所做的 99% 的工作都在单独的文件中,不会合并冲突 - 所以这并不像我所做的版本更改那么简单。我需要找到将我的代码与主项目本身联系起来的那 1% 的代码。
为了方便起见,我建议在这里使用 bisect
命令。
当然,您 可以 逐一检查您的提交,从 HEAD
倒退直到找到断点,但是 bisect
, 旨在简化这个过程。通过这种方式,可以将数百个提交相当快地分解为几个步骤。
基本上,它使用二分法搜索的原则,检查两个时间点之间的提交(在你的情况下,从现在到你分支 master 的时间点),让你 运行 无论您需要什么测试,然后等待您选择将提交视为 "bad"(如果您的错误出现在时间线的这一点),或 "good"(如果错误不是 还显示)。然后它迭代地重复该过程,直到您找到带来麻烦的提交。
# 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
(tag 在这里以口语形式使用,当然没有涉及真正的 git 标签,既没有轻量级也没有注释)
看看doc(bisect
的其他一些子命令很方便,比如bisect log
),深吸一口气,拿起你的头灯,继续努力.