Algunas operaciones avanzadas y pozos de git

Prefacio

Haga un pozo, registre algunos escenarios de uso y las operaciones correspondientes de git

Confirmación de envío de error

Inserte la descripción de la imagen aquí

# 回退一次commit
git reset --hard HEAD^
# 回退到某次commit
git reset --hard <commit_id>

Si usa git revert, se dejarán dos registros.
Especialmente cuando fusiona accidentalmente el maestro en la rama actual, si usa revertir para deshacer la modificación, el PR subsiguiente generará muchos conflictos.

Luego presione el resultado del reinicio local

git push --force origin <branch_name>

inicialización

Este proceso no se considera avanzado, pero siempre uso el escritorio github para operarlo, lo cual es muy desconocido.

git init
git remote add origin [email protected]:xxxx.git

Por razones de seguridad, la comunicación entre el servidor de Github y nuestro local requiere el uso de la clave SSH para verificar

# 网上的一些方案无法生成可用的SSH key
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Solo ponlo en github

relacionado con el clon de git

Utilice el sitio web espejo de github para acceder, github.com.cnpmjs.org, reemplazaremos github.com en el sitio web original.
Como

git clone https://github.com.cnpmjs.org/graykode/gray.git

Después de eso, obtendrá la carpeta del proyecto, y luego de ingresar. Git contiene toda la información del proyecto del almacén remoto

root@hecs-x-large-2-linux-20200730202807:~/code/iLife/iLife# git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/auth
  remotes/origin/back-end-baiduai
  remotes/origin/back-end-bili

Nota: Después de utilizar este método, es posible que la función de inserción y recuperación tarde varias veces en ejecutarse.

error: src refspec master no coincide con ninguno

La razón del error es que no hay archivos en el directorio y no se puede enviar un directorio vacío, y al menos una confirmación antes de que se pueda enviar la inserción.

CABEZA separada en origen / maestro

Esto se debe a que al cambiar al maestro remoto

git checkout origin/master

Pregunte lo siguiente

$ git status
HEAD detached at origin/master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        iLife/

nothing added to commit but untracked files present (use "git add" to track)

Explique que ahora es un estado de rama anónimo.
Normalmente, HEAD apunta a una rama y la rama apunta a una confirmación.
El estado HEAD separado significa que el puntero HEAD no apunta a ninguna rama, sino que apunta a una confirmación.
Como HEAD no puede apuntar a una rama remota, solo puede apuntar a una confirmación local o una rama local. Cuando "git checkout rama remota" y no hay tal rama localmente, HEAD apuntará directamente a la confirmación apuntada por la rama remota, y los puntos HEAD para confirmar entrarán en el estado HEAD separado.
luego:

git checkout -b 分支名 

Deje que una rama apunte a esta cadena de compromiso para volver a la normalidad

Eliminar cambios locales no confirmados

He estado usando el escritorio y la línea de comando es muy poco calificada 0 0

Elimine todos los cambios no confirmados localmente:

git checkout .

Eliminar cambios locales al archivo de archivo

git checkout -- file

Cada git pull requiere autenticación

Si nuestro código de descarga de clon de git está conectado a https: // en lugar de git @ git (ssh), cuando operamos git pull / push en el control remoto, siempre se nos solicita que ingresemos la cuenta y la contraseña para operar con éxito, entrada frecuente de la cuenta y la contraseña serán problemáticas.

Solución:

git bash en el directorio de su proyecto, ingrese:

git config --global credential.helper store

Luego, generará un texto localmente y registrará su número de cuenta y contraseña. Por supuesto que no es necesario que te preocupes por ellos.

Luego usa el comando anterior para configurarlo, y luego opera git pull nuevamente, y luego le pedirá que ingrese la contraseña de su cuenta. Después de este tiempo, no es necesario que ingrese la contraseña nuevamente.

problema de falla de gitignore

Si no se agrega gitignore al comienzo del proyecto, agregar gitignore más tarde no será válido, porque git ya agregó estas carpetas a la administración del proyecto. Solo borra el caché

git rm -r --cached .  
git add .
git commit -m "update gitignore"

Supongo que te gusta

Origin blog.csdn.net/weixin_44602409/article/details/108048999
Recomendado
Clasificación