¿Por qué .gitconfig? [includeIf] ¿No funciona?

1 minuto de lectura

Ajustes del sistema:
MacOS Catalina 10.15.6

> git --version
git version 2.24.3 (Apple Git-128)

archivo: ~/.gitconfig :

[user]
    name = nickname
    email = nickname@gmail.com
[includeIf "gitdir:~/Business"]
    path = ~/.gitconfig-work

archivo: ~/.gitconfig-work :

[user]
    name = First Last
    email = fl@work.com

Salida al intentar verificar la configuración en la terminal:

(base) MBP-Name:~ myname$ cd ~/Business/
(base) MBP-Name:Business myname$ git config --get user.name
nickname

He probado ambos relativos ~ y absoluto / caminos ya sea para gitdir y path en el archivo de configuración. En cada cambio estoy reiniciando el bash. Además, he leído varias otras preguntas de stackoverflow sin éxito. Algunos de ellos sugerían agregar el i opción para la insensibilidad a mayúsculas y minúsculas, pero no solucionó el problema.

Algunas ideas ?

  • Es ~/Business/ un repositorio (árbol de trabajo)? Si no es una pista: includeIf funciona solo en repositorios bajo ~/Business/ pero no en un directorio que no sea de repositorio.

    – Doctor

    15 de noviembre de 2020 a las 10:33

  • @phd Tenías toda la razón. Tuve que cambiar “` “gitdir:~/Business”“` a “` “gitdir:~/Business/”“` y presionar el comando dentro de una carpeta de repositorio“`. Gracias

    – fiebre de entropía

    15 de noviembre de 2020 a las 10:36

  • @entropyfever Eso es útil. Deberías agregarlo como respuesta… 😀

    – Melvin Abraham

    8 oct 2022 a las 14:54

  • Me tomó algunas horas averiguar por qué no funciona. La configuración anulada solo será visible cuando esté en un directorio git; de lo contrario, siempre muestra los valores globales.

    – Daniel B.

    24 de febrero a las 4:23

Intenté eliminar las comillas dobles y escribirlo de nuevo. curiosamente funcionó. ya que copié el texto de https://blog.gitguardian.com/8-sencillos-pasos-para-configurar-varias-cuentas-git/

  • Este fue el problema para mí, la diferencia entre las comillas no estándar (” “) y las comillas estándar (” “). Elimina las comillas elegantes y sus obras.

    – Sr. Involucrado

    26 de julio de 2022 a las 22:45

  • Uuuuuuuuuuuuuuh +1

    – Madbreaks

    6 ago 2022 a las 18:01

Avatar de usuario de BerendPronk
berendpronk

Yo mismo también tuve problemas con mi .gitconfig. Leí los documentos varias veces, busqué en Stackoverflow y en algunas publicaciones de blog. Pensé que había probado todas las soluciones posibles: rutas relativas, barras inclinadas, diferentes comillas, etcétera. Ninguna de las soluciones que probé realmente funcionó.

Llegué al punto en que intenté incluir un archivo usando [include]pero sin éxito tampoco.

Después de algunas horas de intentar y buscar respuestas, encontré una publicación que mencionaba un .gitconfig ser incluido también podría ser un .txt archivo. Cambié los archivos de .gitconfig-{company} a gitconfig-{company}.txt y renombró los caminos en el global .gitconfig¡y todo funcionó al instante!

Espero que esto funcione para ti y para los futuros usuarios de Google.

  • Pienso que el .gitconfig el archivo tiene que terminar en .gitconfigcomo .github.gitconfigque es lo que uso

    – bombomb007

    14/09/2022 a las 18:59


  • El global sí. Pero cada vez que intentaba importar un archivo a través del [includeIf]necesitaba agregar el .txt extensión para que funcione. Me tomó mucho tiempo darme cuenta, ya que todos los ejemplos decían que debería ser .gitconfig-{company}. Tal vez hay una configuración habilitada en algún lugar que hace que mi sistema solo verifique .txt. Tal vez alguien también luche con eso y descubra que el .txt funciona para ellos también 🙂

    – Berend Pronk

    16 de septiembre de 2022 a las 7:05

  • Has probado .{company}.gitconfig?

    – bombomb007

    16 de septiembre de 2022 a las 13:12

  • Podría intentar eso. Gracias por la información. Los ejemplos decían que no importaba, pero parece más lógico de esa manera. Solo quería que supieran que un .txt archivo también es suficiente.

    – Berend Pronk

    19 de septiembre de 2022 a las 7:10

Esto solo afectará los proyectos futuros creados con git init. Los proyectos anteriores permanecerán sin cambios.

TL;RD

  1. Asegúrate de probar esto includeIf negocio antes de asumir que simplemente funciona (¿como cualquier otra cosa? 🤷‍♀️). Parece que no funciona (de inmediato) en muchas circunstancias.
  2. Por alguna razón, git no recogí el cambio hasta que uso git config para hacer algún cambio aleatorio. (Nota: estoy en win10)

Versión larga

En primer lugar, asegúrese de revisar las otras respuestas en esta publicación, ya que cada publicación parece contribuir con un problema potencial diferente.

Ahora esto es lo que me pasó (NOTA: estoy en Windows 10):

  1. Abierto ~/.gitconfig y agrega la entrada includeIf entrada
    • p.ej:
      [includeIf "gitdir:~/x/"]
      path = ~/.x.gitconfig
      
  2. Crea la costumbre ~/.x.gitconfig archivo y anular alguna configuración, por ejemplo, establecer a.b = c (asegúrese de que sea diferente del predeterminado, para que pueda probarlo al principio)
  3. NOTA: Esta respuesta afirma que esto no afectará a los directorios antiguos, pero no lo he probado.
  4. Ir al directorio (cd ~/x) y prueba. Por ejemplo, lo intenté git config a.b y me dio el valor equivocado.
  5. Me di cuenta de que la carpeta aún no estaba git inited, así que corrí git inity todavía no funcionó.
  6. Sln: Hice un cambio de configuración local aleatorio a través de git config some thing
  7. Probado nuevamente y funcionó y siempre recogió todos los cambios inmediatamente después de eso. ¡Ahora funciona!

Problema

En mi caso [includeIf] no funcionó porque mi configuración está en el C: conducir (C:\Users\User\.gitconfig), pero mis proyectos de trabajo están en el D: conducir (D:\Projects\Work\).

Solución

En mi caso debería ser:

[includeIf "gitdir/i:Work/"]

En lugar de:

[includeIf "gitdir/i:~/Work/"]

Documentación

Pasé mucho tiempo tratando de depurar esto, pero todas las veces no funcionó.

Así que decidí borrar y empezar de nuevo. Esto es lo que hice:

Crear .gitconfig

[includeIf "gitdir:~/Documents/home/"]
path = ~/.gitconfig.home
[includeIf "gitdir:~/Documents/work/"]
path = ~/.gitconfig.work

Crear .gitconfig.work

[user]
name = My Name
email My work email

Crear .gitconfig.home

[user]
name = My Name
email My personal email

Luego, inicialicé git (git init) en ambas carpetas: ~/Documents/work/ y ~/Documents/home/.

Después de inicializar todo funciona como se esperaba.

Espero que te ayude en caso de que estés experimentando estos problemas.

Probado en Mac y Windows.

¿Ha sido útil esta solución?