我在Phabricator(使用Git)中有一个开放的修订,并且我用arc diff
命令提交了一个diff。
问题是这个diff不好,所以我想撤销它,回到以前的diff。
你知道我该怎么做吗?我经常犯错误,对错误的分支进行区分。
第一步是撤销diff,我们不能从修订历史中删除diff,但是我们可以恢复它。
$ arc patch --diff <diff_id> # last good diff, creates <arcpatch-branch>
$ arc diff --update <revision_id> <arcpatch-branch> # "reverts" the offending diffs to the current state
此时,您的修订已恢复到原始状态。如果您想再次执行diff,那么请按照您通常做的操作。签出分支,对diff进行修改,然后执行diff。
$ git checkout <new_branch>
$ arc diff <source_branch> # new_branch has changes that is intended to be merged into source_branch
感谢altendky,他列出了这些步骤中的大部分。然而,他引用的revision
标志不再存在,我还希望将步骤列出得更清楚一些。
免责声明:我的Git经验有限,目前我在SVN上使用Phabricator。
假设您没有其他本地更改,您可以恢复您的工作副本,然后arc patch --diff <diff_id>
,其中diff ID显示在Revision Update History
表的ID列中。然后像往常一样只更新arc diff --revision <rev_id>
。我想从技术上讲,这不是删除,但这是伪修订控制。错误和更正将被跟踪。
目前不支持。您可以按照altendky推荐的过程或任何类似的过程(即,在工作副本处于正确状态时再次运行arc diff
),用新的良好的diff替换坏的diff。
这是我们打算最终添加的功能。您可以在这里查看上游的进度:
https://secure.phabricator.com/T1081(关闭无法修复)