tab - git tags best practices
¿Puedes diferenciarte de una rama particular de git? (2)
En general, arc diff <branch>
hará lo que quieras. (Si ya está en la rama, en lugar de en una rama de tema local, intente con el arc diff origin/<branch>
).
Cuando se invoca de esta manera, el arc
realmente se diferenciará de la merge-base
de merge-base
de la punta de la rama y la confirmación actual en la copia de trabajo, pero generalmente esto es lo que pretendes. Si realmente quieres generar un diff contra la punta de la rama, puedes usar arc diff --base git:<branch>
, pero esta diferencia incluirá cambios que deshacen cualquier confirmación en la branch
que sea descendiente del punto de la rama, como git diff <branch>..HEAD
haría.
En todos los casos, puede usar arc which <commit>
para obtener una vista previa de lo arc diff
hará arc diff
. Esto explicará qué rango de revisión se seleccionará, le mostrará el comando para ver exactamente qué cambios se incluyen y explica por qué se seleccionó ese rango.
También puede usar arc diff --preview
para generar solo un diff, sin enviarlo para su revisión. Esto le permitirá obtener una vista previa de los cambios antes de enviarlos a otra persona.
Ver también:
https://secure.phabricator.com/book/phabricator/article/arcanist_commit_ranges/
Soy bastante nuevo tanto para Arcanist como para git. Me gustaría poder crear una diferencia de arco (instancia de Phabricator Differential con Arcanist) contra una rama de git en la que actualmente estoy desprotegido / en funcionamiento (y tengo una confirmación local no activada) en lugar del maestro. Para mí, los documentos de arco no están claros en esto. ¿Es posible? ¿Cómo? Sería bueno si la respuesta funciona para 2-3 compromisos locales sin empujar también.
También "arc help diff" da:
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.
Tal vez solo necesito hacer "arc diff [commit]" donde [commit] es la punta de la rama objetivo? Pero me gustaría estar seguro, porque no quiero contaminar nuestra instancia de Phabricator.
Además, me complace recibir respuestas de "lo estás haciendo mal" si la respuesta explica cómo hacerlo correctamente.
La respuesta de Evan es generalmente preferible porque refleja más las mejores prácticas de flujo de trabajo de git. Recomiendo seguir eso si puedes.
Si necesita una solución rápida y está trabajando (desprotegido) en la misma rama a la que desea empujar, también puede hacer arc diff HEAD^
o HEAD~
arc diff HEAD^
para una única confirmación, o arc diff HEAD~N
para N confirmaciones.