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.

RanRag
fuente
1
Pregunta relacionada: stackoverflow.com/questions/2233590/…
Wug
@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

Alexander Zhugastrov
fuente
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://[email protected]
MERose
fuente
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 [email protected] AND name%[email protected] - 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://[email protected]': <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
Jay Patel
fuente
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 [email protected]:URL remota:

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

$ git config remote.origin.url "[email protected]:dir/repo.git"
Lukasz Czerwinski
fuente
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 [email protected]: 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
Ben
fuente
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:[email protected]
Daniel Lerch
fuente
1
¿Qué pasa si está @incluido en mi contraseña? url = https://username:abc@[email protected]Me está dando un error queCould not resolve host: @[email protected]
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")

Alan De Smet
fuente
16

Cambiar el repositorio clonado funciona:

git remote set-url origin [email protected]: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).

Layer8Err
fuente
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.

gkris
fuente
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

Kai Wang
fuente
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>
Yuvi
fuente
9

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

git config credential.helper store

funciona.

Languoguang
fuente
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
Más simple
fuente
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

Hazarapet Tunanyan
fuente
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 [email protected]/my_repo.git
ManoDestra
fuente
3
  1. $ git config credential.helper store

  2. $ git push / push https://github.com/xxx.git

  3. Luego ingrese su nombre de usuario y contraseña.

  4. Hecho
Stephen Tun Aung
fuente
No es lo git push/push https://github.com/xxx.gitque debería sergit push https://github.com/xxx.git
Mohsin
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://[email protected]/.insteadOf https://github.com/

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

Akif
fuente
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.

Aominé
fuente
1

Puedes correr

git config --global credential.helper wincred

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

cyperpunk
fuente
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 .

Akash Gandhi
fuente