Git pide nombre de usuario cada vez que presiono


676

Cada vez que trato de entrar en mi repositorio pregunta por los dos username & password.

No tengo problemas para volver a ingresar mi contraseña cada vez, pero el problema está en ingresar el nombre de usuario. Yo uso httpspara clonar mi repositorio.

Entonces, ¿cómo puedo configurar git para que no pida usernameen cada uno git push?

Soy nuevo en Linux, pero IIRC en Windows git pushsolo pide contraseña.



@Wug: Pero no quiero almacenar la contraseña. Solo quiero almacenar el nombre de usuario.
RanRag

44
intente seguir esas instrucciones y omita la línea de contraseña.
Wug


también hay una respuesta en superusuario para su inicial pregunta - superuser.com/questions/847181/...
dk14

Respuestas:


975

Editar (por @ dk14 según lo sugerido por los moderadores y comentarios)

ADVERTENCIA: si utiliza credential.helper storela respuesta, su contraseña se almacenará completamente sin cifrar ("tal cual") en ~/.git-credentials. Consulte la sección de comentarios a continuación o las respuestas de la sección "Vinculado", especialmente si su empleador tiene tolerancia cero para los problemas de seguridad.

Aunque se acepta, no responde a la pregunta real del OP sobre omitir solo un nombre de usuario (no contraseña). Para los lectores con ese problema exacto, la respuesta de @grawity podría ser útil.


Respuesta original (por @Alexander Zhu):

Puede almacenar sus credenciales con el siguiente comando

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

También te sugiero que leas
$ git help credentials


161
Advertencia, no hay seguridad en este método. Su contraseña se almacena como texto sin formato.
Mark Lakata

13
se puede encontrar mejores maneras de lograr la seguridad aquí - stackoverflow.com/a/28104587/1809978
dk14

44
@MarkLakata - ¿Por favor dime cómo puedo deshacer el comando en esta respuesta? Después de deshacerlo, usaré un método seguro para almacenar las credenciales.
MasterJoe2

25
@ testerjoe2 prueba git config --unset credential.helper
dk14

1
No olvide establecer el tiempo de espera, el valor predeterminado es 15 minutos: establezca el valor en 30 millones para tener aproximadamente 1 año. Encontrado aquí: stackoverflow.com/a/35942890/1579667
Benj

181

Puede lograr esto en el .git/configarchivo de su repositorio local. Este archivo contiene una sección llamada 'remota' con una entrada llamada 'url'. La entrada 'url' debe contener el enlace https del repositorio del que está hablando.

Cuando prefija la 'url' del host con su nombre de usuario, gitya no debería pedirle su nombre de usuario. Aquí hay un ejemplo:

url = https://username@repository-url.com

55
Si usa caracteres especiales en su nombre de usuario o pw, entonces debe escapar de ellos. Ver en.wikipedia.org/wiki/Percent-escape para los personajes de escape correctos. por ejemplo, "! @ #" [sin las comillas] se reemplazaría por "% 21% 40% 23". Ver también la respuesta de "Daniel Lerch" a continuación
nsof

1
¿Verán mi nombre de usuario otras personas que trabajan en el mismo repositorio?
CodyBugstein

17
Esta debería ser la respuesta correcta a la pregunta del OP, es decir, "cómo persistir el nombre de usuario, NO la contraseña". Esta respuesta no solo es la forma correcta de persistir el nombre de usuario, sino que también evita el posible riesgo de seguridad git config credential.helper store.
RayLuo

Estoy agradecido por esta respuesta e intenté de esta manera, pero todavía me pregunta cada vez (v 2.1.4) - probé el control remoto con name@gitlab.com AND name%40mailaddress.com@gitlab.com - siempre pideusername for https://gitlab.com:
eli

1
Intenté esto y obtuveunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger el

118

Autenticación permanente con repositorios Git

Ejecute el siguiente comando para habilitar el almacenamiento en caché de credenciales:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

El uso también debe especificar el vencimiento del almacenamiento en caché

git config --global credential.helper "cache --timeout 7200"

Después de habilitar el almacenamiento en caché de credenciales, se almacenará en caché durante 7200 segundos (2 horas) .


Leer credenciales Docs

$ git help credentials

Establecí el tiempo de espera en 7200. Pero luego pensé en establecerlo en 5 para probar. Así que lo configuré en 5, pero cuando intenté presionar nuevamente después de 30 segundos, pero no me pidieron nombre de usuario ni contraseña.
Buttle Butkus

Puede ser su credencial, no almacenar a nivel mundial.
Jay Patel el

Con respecto a la seguridad, vale la pena consultar los documentos: "Este comando almacena las credenciales en la memoria caché para su uso por futuros programas de Git. Las credenciales almacenadas nunca tocan el disco y se olvidan después de un tiempo de espera configurable". git-scm.com/docs/git-credential-cache
mloskot

2
¿No es git config credntial.helper storeese comando peligroso, el responsable de almacenar las credenciales de texto sin formato en el archivo ~ / .git-credentials? Creo que (y en mi experiencia) el comando ... caché ...- es suficiente: git config --clogal credential.helper 'cache --timeout 7200'crea el directorio: ~/.git-credential-cachecon el archivo de caché, así que simplemente ejecute este comando y NO el comando "... store"
eli

No funciono para mi. Todavía pido contraseña cada vez
Ian Grainger

75

Agregue nuevas claves SSH como se describe en este artículo en GitHub .

Si Git aún le pide nombre de usuario y contraseña, intente cambiar https://github.com/a git@github.com:URL remota:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
¡Esta debería ser la respuesta correcta! Guardar su credencial es increíblemente no seguro. Si tengo una clave SSH, me pide mi credencial solo porque no tengo la URL correcta como se describe aquí.
Alexis Wilke

2
o puedes usargit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness el

1
git config remote.origin.url git@gitlab.com: adammajewski / ray-backward-iteration.git
Adam

1
Gracias, esta es la respuesta que estaba buscando.
Yupeng Tang

50

La forma más fácil que encontré fue con este comando:

git config --global credential.https://github.com.username <your_username>

Esto funciona sitio por sitio y modifica su configuración global de git.

Para ver los cambios, use:

git config --global --edit

1
Por alguna razón, este fue el único método que funcionó para mí. ¡Gracias!
Mathetes

¿Es seguro este método? ¿la contraseña de github solo se almacena en la computadora local y no se envía a github?
Akin Hwan

No sé por qué esta no es la respuesta aprobada, el comando funciona perfectamente y responde completamente y solo a la pregunta: almacenar nombre de usuario, no contraseña. Gracias ben!
AmaelH

También puede ejecutar: [git config --global credential.helper 'cache --timeout = 3600'] Entonces su contraseña se guardará durante una hora cada vez
obenda

31

Si está utilizando https en lugar de ssh, puede editar "url" .git/configcomo dice user701648, pero si lo desea, también puede agregar la contraseña:

url = https://username:password@repository-url.com

1
¿Qué pasa si está @incluido en mi contraseña? url = https://username:abc@123@repository-url.comMe está dando un error queCould not resolve host: @123@git.com
Rahul Mankar

La usernameparte parece ignorarse cuando el servidor redirige (como de FOO a FOO.git).
Mikhail T.

22

Puede configurar su nombre de usuario para todos los repositorios en un sitio determinado poniendo algo como lo siguiente en su archivo de configuración de Git. Querrá cambiar " https://example.com " y "yo" a la URL real y su nombre de usuario real.

[credential "https://example.com"]
    username = me

(Esto es directamente de "credenciales de ayuda git")


16

Cambiar el repositorio clonado funciona:

git remote set-url origin git@github.com:gitusername/projectname.git

El uso de credenciales almacenadas en caché funciona, y establecer el tiempo de espera hace que las cosas sean menos molestas. Si usa el asistente de credenciales de Windows, ese debería ser el método más fácil (especialmente si SSH está bloqueado).


Esta es una respuesta correcta para GitHub (que la pregunta hace específicamente ... (no estoy seguro de por qué te votaron negativamente).
Tim Groeneveld

12

Asegúrese de estar utilizando SSH en lugar de http. Comprueba esta respuesta SO.


3
Pero tuve que usarlo httpporque en mi universidad sshestá bloqueado por el departamento de administración del sistema.
RanRag

Entonces quizás este enlace te ayude.
gkris

Hay una página de ayuda oficial de GitHub sobre esto ahora. Lo que sucedió para mí fue que cloné uno de mis propios repositorios antes de iniciar sesión, por lo que no me reconoció y, por defecto, creo que es HTTPS. help.github.com/articles/changing-a-remote-s-url
anon58192932

12

git config - global credential.helper cache


1
Esta es una mejor respuesta en Linux.
Larry

9

Además de la respuesta del usuario 701648, puede almacenar sus credenciales en su carpeta de inicio (global para todos los proyectos), en lugar de la carpeta del proyecto utilizando el siguiente comando

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

Cuando solo git pull, git pull origin xxx, git solicita nombre de usuario y contraseña.

git config credential.helper store

funciona.


9

La forma más fácil es crear un ~/.netrcarchivo con los siguientes contenidos:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(como se muestra aquí: https://gist.github.com/ahoward/2885020 )

Incluso puede cerrar los permisos en este archivo para que nadie pueda leer su contraseña escribiendo:

chmod 600 ~/.netrc

6

Si usa la versión SSH , no tendrá ningún problema con las contraseñas. Solo una vez que genera la clave SSH , para decirle a git, que esta PC funcionará con esto Solo cuenta de github y nunca me preguntará nuevamente sobre ningún acceso (para esta PC).

Cómo generar SSH para Github


4

Para evitar ingresar el nombre de usuario, pero aún se le pedirá que ingrese una contraseña, simplemente puede clonar su repositorio, incluido el nombre de usuario:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationes una forma más confiable que https+credential.helper

Puede configurar el uso de SSH en lugar de HTTPS para todos los repositorios de la siguiente manera:

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfestá documentado aquí .


2

Método rápido

obtenga la URL de su git cuando esté dentro del directorio de trabajo:

git config remote.origin.url

entonces :

git config credential.helper store

git push "url of your git"

pedirá nombre de usuario y contraseña la última vez

hecho.


1

Puedes correr

git config --global credential.helper wincred

después de instalar e iniciar sesión en GIT para Windows en su sistema.


No vi la palabra de Linux en la consulta. My bad
cyperpunk

1

(Solo para Mac OS)

para Windows y Linux , consulte el enlace de documentación de Github mencionado a continuación.

De la documentación de Github: Enlace de documentación

Almacenamiento en caché de su contraseña de GitHub en Git

  • Necesita Git 1.7.10 o posterior para usar el asistente de credenciales osxkeychain.

    para verificar tu versión de Git: git --version

  • para descubrir que el asistente de osxkeychain ya está instalado:

    git credential-osxkeychain

    Si obtiene la siguiente respuesta, ya la tiene instalada y lista para usar en su Mac:

    > Usage: git credential-osxkeychain <get|store|erase>

    Si no obtiene una respuesta como se muestra arriba, puede instalarla ejecutando el siguiente comando:

    git credential-osxkeychain

  • para decirle a git que use globalmente osxkeychain para las credenciales de git:

    git config --global credential.helper osxkeychain

    Se le solicitará una vez antes de guardar las credenciales en el llavero .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.