tag practices name intellij idea configurar commits commands best git intellij-idea

practices - intellij git



Mejores prácticas para usar Git con Intellij Idea (2)

En pocas palabras: ¿cuáles son las mejores prácticas para usar Intellij Idea (9) y Git?

Contexto

Recientemente hemos actualizado a Intellij idea versión 9 y hemos comenzado a utilizar Git para una nueva función en el proyecto existente.

En gran medida usamos la línea de comandos de git para aprender mejor la herramienta. Pero pensamos que elegiríamos la mente de colmena para averiguar cuáles son las mejores prácticas para git con idea.

La Idea UI es similar tanto para CVS como para Git, pero las implementaciones subyacentes difieren un poco.

Preguntas de ejemplo

Por ejemplo: -Con CVS, cuando tuvimos el lanzamiento múltiple de un producto, cada uno de nosotros tendría una copia local de las sucursales 1-0, 2-0, 3-0, etc., cada una con sus propios archivos Intellij (es decir, .ipr, .iws, etc.). El "modo git" parece tener un proyecto y usa ''git branch'' para cambiar de rama. Esto está bien, pero genera una gran sobrecarga para la idea (ya que tiene que volver a cargar cada archivo modificado, incluidos los archivos comprimidos) cuando se cambian las sucursales. Entonces: ¿todavía tienes un proyecto separado (con .git) para cada "versión principal" o tienes un proyecto y usas "git branch"?

-¿Es una buena idea usar Autostash?

-¿Usted agrega automáticamente cada modificación a su git commit? o utilizar "git agregar" más tarde?

-¿Regajeas?

-¿La mejor manera de fusionarse?

-Cualquier otro consejo / consejos / qué-trabaja-para-ti, etc.

Comentarios finales

Todavía "pensamos en cvs", así que parte de esto se está acostumbrando a git; parte se está acostumbrando a la Ui de Idea para git.

Estas son preguntas bastante rudimentarias, ya que aún utilizamos la línea de comando principalmente. También he oído que la idea 10 tiene herramientas de integración de git mejores / más fuertes / más rápidas

Gracias


Esto es lo que hemos encontrado después de varias semanas de Git / Idea. He hecho de esto una wiki comunitaria. Por favor, agregue sus 2 coronas / centimos / pfennings / centavos.

Nota: Estoy respondiendo a mi propia pregunta porque busqué esos puntos de fácil uso.

Presuposición

La idea es una gran herramienta. Nadie aquí se queja. Sólo observando.

Mejores prácticas

  • En este punto (9.0.3) Git con Idea es simplemente más difícil de usar que SVN con Idea. Parte proviene de la complejidad de Git (vs SVN), en parte porque las herramientas de Idea no hacen todo en el mundo de git.

  • Por lo tanto necesitarás usar la línea de comando.

  • La herramienta de combinación de Idea funciona mucho mejor que la combinación de líneas de comando o incluso usar mergetool (usando meld o mergetool). La razón: tiene mucha más libertad para trabajar en el ''entorno de ideas'' en lugar de arreglar una pelusa a la vez.

  • Recuerde sincronizar en Idea (ctrl-alt-y) cuando actualice el árbol de trabajo desde la línea de comando

  • Viendo la Consola de Git para aprender los trucos de git de la idea; idea ejecuta los comandos de git allí (vista Control de versiones, pestaña Consola):

ejemplo:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp 13:31:02.437: cd J:/projects/PE-GIT/pe 13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp

  • Desafortunadamente, Idea no tiene buenas herramientas para "fusionar conflictos en confirmaciones en sentido ascendente" en 9.0.3

Ejemplo:

  • Alice funciona, confirma (localmente) el archivo A, confirma el archivo B, confirma el archivo C
  • Bob trabaja, confirma el archivo C, confirma el archivo D, confirma el archivo E
  • Alice empuja sus cambios
  • Bob tira de sus cambios.

A partir de CVS / SVN, esperaba que surgiera una herramienta útil y diferente de Ideas. No. En lugar de eso, git / idea levanta una bandera roja, generalmente termino usando "git mergetool" (fusionar od en linux, tortoiesmerge en windows).

Nota: Tal vez la idea proporciona una mejor manera. Por favor ponme en línea recta. Nota para el motivado: ¿puede configurar .gitconfig para usar la herramienta de diferenciación de Idea?

Alijo

  • La funcionalidad "Shelve" de las ideas duplica "Git Stash". Ambos parecen similares. Ambos usan parches. Probablemente quieras usar uno u otro. No he descubierto la ventaja de uno u otro

Grandes proyectos antiguos

  • Si está trabajando en un proyecto de una década de antigüedad migrado a Git, con los archivos jar registrados en el scm (es decir, previamente registrado en CVS / SVN, donde log4j-1.0.jar está en BRANCH-2-0 y la línea principal tiene log4j- 9.0.jar), PROCEDA CON PRECAUCIÓN si desea verificar "versión 2.0" de su proyecto. La idea necesita descargar todos los archivos "principales" y volver a cargar los archivos comprobados en 2.0. Esto lleva para siempre.

Otras cosas pequeñas

  • Los menús / UI de la idea siguen mostrando "git init ..." aunque ya hayas inicializado Git. Es confuso, pero ignóralo.

  • No puede tener el mismo árbol de trabajo tanto en Git como en CVS / SVN (aunque la interfaz de usuario puede parecer que lo implica). Intenté esto durante una fase inicial de "probemos git y aún usamos CVS como un plan de respaldo". No funciono


Primero, puede obtener mucha información sobre git en los libros de referencia en línea gratuitos:

Nota: las "buenas prácticas" y el flujo de trabajo de Git son totalmente independientes del IDE que utiliza. Afortunadamente, IDEA es un gran IDE y la mayoría de las funciones útiles de Git están bien implementadas (rebase, escondite, etc.)

Sobre tus preguntas de git-flow, estás pensando como con VCS centralizado.

Git es un sistema de control de versiones distribuido . Por lo tanto, tienes que " pensar primero local ".

Para confirmaciones, realmente no importa si agrega cada archivo al índice inmediatamente o más tarde, si realiza confirmaciones frecuentes o no. Es tu trabajo local, y puedes organizarlo como prefieras.

Lo que es importante es tener compromisos limpios cuando está a punto de impulsar su trabajo (exponerlo a los otros desarrolladores).

Cuando está a punto de presionar, puede corregir todo su historial desde la última pulsación (con rebase, por ejemplo).

Por ejemplo (si olvidó modificar la confirmación anterior): - cometer "una superfunción" - cometer "oups: olvidó un archivo" - cometer "corrección de errores"

Antes de insertar tesis 3 confirmaciones, puede fusionar las confirmaciones de tesis, utilizando una rebase interactiva con IDEA. Así que las 2 últimas confirmaciones serán incluidas en la primera.

Nota: puede modificar su historial mientras no haya presionado. Después de que todavía puedas, pero es una muy mala idea (y si no obligas a Git, se rechazará el próximo impulso), ya que podría destruir tu historial de compañeros de trabajo (si han recuperado / fusionado tu trabajo).

Acerca de un flujo de trabajo de Git común, le recomiendo este buen artículo: http://nvie.com/posts/a-successful-git-branching-model/