-2

我在本地(在我自己的分支中)开发我的应用程序,但我只能在远程开发服务器上测试它,方法是推送到服务器上的 git repo(我自己的分支),然后在那里测试工作副本。

由于我无法找出我的网络应用程序崩溃的原因,我想找到最后一个“良好”状态以了解原因。我考虑过使用git bisect. 但它只改变本地仓库的状态,而不是原点,如果它有效,我无法在本地测试。那么我应该怎么做才能轻松检查远程分支上的不同提交(不会在提交历史中造成太多混乱)?

4

2 回答 2

1

如果我理解正确,您可以在本地开发您的应用程序,但您只能在远程服务器上测试它,方法是推送到服务器上的 git 存储库(然后在那里签出工作副本,我想)。

在这种情况下,您必须git bisect在远程系统上的工作副本上运行。git bisect不会创建新的提交或新的分支,它只是检查不同的提交(从而使您进入“分离的 HEAD”状态)。因此,您不能将由创建的中间状态推git bisect送到远程(从技术上讲,您可以,但是您必须每次都强制推送,然后您无论如何都需要在远程工作副本中进行修复,这样会帮不了你)。

但是正如我所看到的(如果我没有正确理解这个想法,请纠正我), git bisect 只改变了我本地仓库的状态,而不是原点。

对,就是这样。准确地说,它只会更改当前在本地工作副本中签出的提交。

TL;博士:

登录到远程服务器,并在git bisect那里运行。如果您只能通过推送来访问服务器,那么您只能靠自己 - git 不支持这一点(至少不是没有一些丑陋的黑客)。

于 2014-12-22T22:11:58.090 回答
1

因为我只能通过推到那里才能访问服务器,所以最后我通过创建一个新的 bugsearch 分支找到了有毒的提交,并在那里切断了提交:

git checkout -b konst54bugsearch

git reset --hard HEAD~1
git push origin +konst54bugsearch
[check the app, repeat reset and force push]

(实际上我可以做一些类似 的事情git reset --hard HEAD~20来估计错误的位置,比如 bisect,但我知道它不会太远)。

当我找到提交时,我在 konst54 分支中恢复了它,在我的分支中获得了一个具有相当干净历史记录的工作应用程序,并计划现在删除混乱的 konst54bugsearch 分支。

于 2014-12-26T11:03:19.047 回答