Подтвердить что ты не робот

Можете ли вы провести различие с конкретной ветвью git?

Я новичок и для Arcanist, и для git. Я хотел бы иметь возможность создавать дугу diff (экземпляр дифференциального анализатора с использованием Arcanist) против ветки git, которую я в настоящее время проверил/работал (и у меня есть одно локальное нетопленное коммит), а не мастер. Для меня arc docs неясны. Является ли это возможным? Как? Было бы неплохо, если бы ответ работал на 2-3 локальных нетолкнутых коммита.

Также "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.

Кроме того, я рад получить ответы "вы делаете неправильно", если ответ объясняет, как это сделать правильно.

4b9b3361

Ответ 1

Как правило, 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/

Ответ 2

Ответ Evan обычно предпочтительнее, потому что он более отражает лучшие методы рабочего процесса git. Я рекомендую следовать этому, если вы можете.

Если вам требуется быстрое исправление и вы работаете (вытащили) ту же ветвь, на которую вы хотите нажать, вы также можете сделать arc diff HEAD^ или HEAD~ для одного фиксажа или arc diff HEAD~N для N коммитов.