¿Son mis files no repositorys seguros con git?

Tengo un website en un server y en mi PC local. Parte del website se almacena en BitBucked como un repository. El website consta de los siguientes files y carpetas:

.htaccess uploads/ resources/ index.php 

El .htaccess contiene la ruta absoluta al directory www . Por lo tanto, mi PC local tiene un file .htaccess diferente como mi server. Además, no quiero sincronizar la carpeta de uploads entre mi PC local y mi server. Los files restantes deben estar sincronizados.

Me di count de que puedo ignorarlos agregando un file .gitignore que contiene

 .htaccess uploads/ 

Además, los files ignorados tampoco están en mi repository.

Como la carpeta de upload y .htaccess no están en mi repository, ahora tengo miedo de borrarlos accidentalmente cuando uso los commands de git.

¿Es correcto que el único command de git posible que los eliminaría sería

 git clean -dfx 

o hay otros commands de Git que no conozco?

Además, ¿es posible recuperar los datos cuando se han eliminado con git clean -dfx?

Sí, por eso siempre ejecuto git clean primero con el modo de dry-run ( -n ), antes de eliminar -n .

 git clean -ndx 

¿Es posible recuperar los datos cuando se han eliminado con git clean -dfx?

No con git en sí mismo: depende de su sistema operativo (como Recuva para Windows )

Pero, en general, los files privados (no rastreados, versionados) no deben verse afectados. Compre git checkout o git reset --hard .
Una vez dicho esto, con el modo de administración (en Windows), puede hacer un enlace simbólico a un file .htaccess o una carpeta de upload ubicada fuera de su repository Git:

 mklink .htaccess C:\path\outside\.htaccess mklink /D .upload C:\path\outside\upload 

De esta forma, sin importar lo que ocurra con su repository de Git, sus datos privados permanecen seguros.

Al poner un file en .gitignore le dices a Git que el file es prescindible. Básicamente, usted otorga permiso para eliminarlo en cualquier momento cuando se necesita el nombre, por ejemplo, cuando se debe crear un directory en lugar de un file ignorado.

git clean no es la única ocasión en la que a Git se le permite eliminar files mencionados en .gitignore . Creo que la git merge también elimina los files ignorados.

Incluso si no lo hace hoy, la definición actual de inputs en .gitignore es que no son importantes. Git no tiene la capacidad de especificar files que son ignorables y valiosos.