Можете ли вы сравнить с определенной веткой Git?
Я довольно плохо знаком с Arcanist и git. Я хотел бы иметь возможность создавать arc diff (экземпляр разности Phabricator, использующий Arcanist) для ветки git, в которой я в настоящее время извлечен / работаю (и у меня есть один локальный un-push-commit), а не master. Для меня неясные документы по этому вопросу. Является ли это возможным? Как? Было бы неплохо, если бы ответ работал и для 2-3 локальных un-push-коммитов.
Также "arc help diff" дает:
diff [paths] (svn)
diff [commit] (git, hg)
Supports: git, svn, hg
Generate a Differential diff or revision from local changes.
Under git, you can specify a commit (like HEAD^^^ or master)
and Differential will generate a diff against the merge base of that
commit and HEAD.
Может быть, мне просто нужно сделать "arc diff [commit]", где [commit] - это кончик целевой ветви? Но я хотел бы быть уверен, потому что я не хочу загрязнять наш экземпляр Phabricator.
Кроме того, я рад получить ответы "ты делаешь это неправильно", если ответ объясняет, как сделать это правильно.
2 ответа
В общем, arc diff <branch>
будет делать то, что вы хотите. (Если вы уже находитесь на ветке, а не на локальной ветке, попробуйте arc diff origin/<branch>
вместо.)
Когда вызывается так, arc
будет фактически отличаться от merge-base
подсказки ветви и текущего коммита в рабочей копии, но обычно это то, что вы намереваетесь. Если вы действительно хотите сгенерировать diff для подсказки ветки, вы можете использовать arc diff --base git:<branch>
, но этот diff будет включать изменения, которые отменяют любые коммиты на branch
которые являются потомками точки ветвления, так же, как git diff <branch>..HEAD
было бы.
Во всех случаях вы можете использовать arc which <commit>
чтобы просмотреть что arc diff
Сделаю. Это объяснит, какой диапазон ревизии будет выбран, покажет вам команду, чтобы точно увидеть, какие изменения включены, и объяснит, почему этот диапазон выбран.
Вы также можете использовать arc diff --preview
генерировать просто diff, не отправляя его на рассмотрение. Это позволит вам предварительно просмотреть изменения, прежде чем отправлять их кому-либо еще.
Смотрите также:
https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/
Ответ Эвана, как правило, предпочтительнее, потому что он больше отражает лучшие практики работы с git. Я рекомендую следовать этому, если вы можете.
Если вам нужно быстрое исправление и вы работаете в той же ветке, к которой хотите перейти, вы также можете сделать arc diff HEAD^
или же HEAD~
за один коммит или arc diff HEAD~N
для N коммитов.