.gitignore archivo, ¿dónde debería ponerlo en mi proyecto xcode?

102

Quiero que git ignore mi UserInterfaceState.xcuserstatearchivo en mi proyecto XCode4, pero ¿dónde debería poner el .gitignorearchivo ?, ¿está dentro de la .gitcarpeta? o fuera? El .gitestá en la misma carpeta con el ProjectName.xcodeprojarchivo

Mauricio Alberto Barragn Huert
fuente
posible duplicado de ¿Dónde pertenece el archivo .gitignore?
Pavan Gupta

Respuestas:

124

Puede tener un .gitignoreen cada directorio de su proyecto.

Sin embargo, la mejor práctica es tener un solo .gitignorearchivo en el directorio raíz del proyecto y colocar todos los archivos que desee ignorar en él, así:

ignoredFile.whatever
ignoredDirectory/*
directory/ignoredFileInsideDirectory
.svn

Una vez que cree el .gitignorearchivo, los archivos ignorados que tienen cambios o son nuevos en el repositorio no se mostrarán como esperando para ser confirmados.

También puede tener un archivo de ignorar git local global, que administrará todos sus repositorios de git.

git config --global core.excludesfile ~/.gitignore_global

Esta alternativa es particularmente interesante para archivos ignorados que no están relacionados con el proyecto, como archivos relacionados con IDE, etc.

Daniel Ribeiro
fuente
1
¿Este .gitignore debe agregarse en el origen o en su copia maestra / local-repo?
Adil
1
Localmente (por supuesto, lo enviará al origen en algún momento).
Daniel Ribeiro
21

Hay enfoques para ignorar archivos en git:

  1. Global git ignore: - En este enfoque, sus reglas personalizadas se aplicarán a cada directorio git en su máquina. Por lo general, este archivo se puede crear en la ~/.gitignore_globalruta. Este enfoque es bueno si desea excluir algunos tipos de archivos generados por el sistema operativo o cualquier otra herramienta de registro, cobro, etc.
  2. Ignorar git por repositorio: - En este enfoque, sus reglas personalizadas se aplicarán a un directorio git específico en su máquina. Las reglas locales por repositorio se pueden agregar al .git/info/excludearchivo en su repositorio. Las reglas especificadas en este archivo no se confirmarán, lo que significa que no se compartirá con otros. Generalmente, este enfoque es útil para evitar la confirmación de archivos generados localmente. Por ejemplo, para archivos creados por su editor.
  3. Por ruta, git ignore: - En este caso, sus reglas personalizadas se aplicarán a la subruta de repositorios git específicos. Puede crear .gitignoreen cualquier subruta de su repositorio específico. Este enfoque generalmente se usa para ignorar algunos tipos de archivos solo en una carpeta específica de un repositorio específico. Si bien estos archivos se pueden agregar al control de versiones mediante otras rutas y otros repositorios.

Entonces, mi sugerencia es que, si desea ignorar su archivo específico ( UserInterfaceState.xcuserstate) en todos sus repositorios, el mejor enfoque es usar el enfoque global git ignore. Sin embargo, si su archivo se genera solo en un repositorio específico, puede usar el enfoque de ignorar git por repositorio.

Para obtener más información, puede leer esta excelente publicación de blog. Y allí, por idioma, las reglas de ignorar git específicas se pueden fundar aquí . Y puede generar automáticamente reglas generales de ignorar git para un idioma, herramienta u sistema operativo específicos usando este sitio web .

Khamidulla
fuente
20

Debe colocar el archivo .gitignore en el directorio raíz del proyecto.

heinrich5991
fuente
12

¿Dónde debo poner el .gitignorearchivo? ¿Está dentro de la carpeta .git?

No hay .gitignoredentro de una .gitcarpeta.
Sin embargo, es un .git/info/excludearchivo, que le permite excluir un archivo localmente, generalmente cuando desea excluir un archivo solo para este repositorio específico (con un alias como este ):

git config alias.exclude "!sh -c 'echo \"$1\" >> .git/info/exclude' -"
git exclude UserInterfaceState.xcuserstate

Si necesita excluir este archivo para todos los proyectos similares, como mencionó Elnur Abdurrakhimov en su respuesta , exclúyalo globalmente.

echo UserInterfaceState.xcuserstate >> ~/.gitignore

Pero, como se menciona en " ¿Necesitamos registrar * .xcuserstate? ", Si se trata de un tipo de archivo que debe ser ignorado por cualquier usuario de ese repositorio, en realidad versionaría un .gitignore en la parte superior del repositorio, con un contenido similar a:

*.xcuserstate 

De esa manera, cualquier usuario de ese repositorio ni siquiera se dará cuenta de que este archivo existe y se genera (sea cual sea su nombre): no aparecerá git statusnunca.

O puede ignorar porxcuserdata/ completo (ya sea en un global .gitignoreo en uno versionado, como el archivo genérico de GitHubObjective-C.gitignore .

VonC
fuente
¡Eres la leyenda de GIT! siempre tus respuestas son las más útiles.
Jad Chahine
@JadChahine Gracias. Me alegro de ayudar (al menos, escribir esas respuestas me ayuda a aprender git)
VonC
@tymac No exactamente;) Solo visito regularmente ( meta.stackexchange.com/questions/122976/… )
VonC
9

Usted debe no poner los archivos de herramientas específicas en un proyecto de .gitignorearchivo - a menos que se requiere herramienta para ser utilizada por cada desarrollador del proyecto.

En su lugar, cree su .gitignorearchivo global personal en su directorio de inicio y actívelo:

git config --global core.excludesfile ~/.gitignore

Ahora puede poner en su .gitignorearchivo cualquier archivo generado por sus herramientas de desarrollo .

Elnur Abdurrakhimov
fuente
6

Normalmente, su mejor práctica es incluir el .gitignorearchivo en el directorio raíz del proyecto.

Ajey
fuente