79 votes

Quel est ce message d’avertissement Git lors de la transmission des modifications à un référentiel distant?

La description est un peu laconique. J'ai simplement ajouté un fichier sur mon local de la branche master et repoussé à une distance de repo. Aucune idée de pourquoi c'est à venir?

avertissement: la mise à jour de la branche courante
avertissement: la mise à Jour de la sorti de la branche peut causer de la confusion,
attention: l'index et le travail de l'arbre ne reflètent pas les changements qui sont en TÊTE.
avertissement: Comme un résultat, vous pouvez voir les modifications que vous venez d'poussé
avertissement: reprend lorsque vous exécutez git diff' là-bas, et vous pouvez
avertissement: pour exécuter git reset --hard' avant de commencer à travailler pour récupérer.
avertissement: 
avertissement: Vous pouvez définir le " recevoir.denyCurrentBranch' variable de configuration pour
avertissement: 'refuser' dans le référentiel distant pour interdire la poussant dans ses
avertissement: la branche courante.
avertissement: afin De permettre poussant dans la branche courante, vous pouvez le mettre à "ignorer';
avertissement: mais ce n'est pas recommandé, à moins que vous disposés à mettre à jour son travail
avertissement: arbre pour correspondre à ce qui vous a poussé dans une autre façon.
avertissement: 
avertissement: Pour silencieux de ce message, vous pouvez le mettre à "prévenir".
avertissement: 
avertissement: Notez que la valeur par défaut sera le changement dans une future version de git
avertissement: afin de refuser la mise à jour de la branche courante, sauf si vous avez l'
avertissement: configuration de la variable définie à "ignorer" ou "prévenir". 

58voto

Jörg W Mittag Points 153275

En fait, il signifie à peu près exactement ce qu'il dit: quelqu'un qui travaille dans le référentiel que vous êtes le poussant à, et que quelqu'un a sorti exactement la même branche que vous êtes le pousser à.

C'est très déroutant, parce que maintenant il pense qu'il a vérifié la dernière version de la branche, quand, en fait, vous avez juste mis à jour le branche à une version plus récente. Donc, quand il dirige maintenant git commit, sa validation essentiellement revenir tous les commits que vous venez de poussé. Et quand il s'exécute git diff il va la voir à l'opposé de tout ce que vous venez poussé, même s'il n'a peut-être même pas changé quoi que ce soit.

Pour cette raison, il est généralement considéré comme une mauvaise pratique de pousser à un non-dépôt nu; vous ne devriez jamais pousser à nu des référentiels, c'est à dire des dépôts qui n'ont pas de joint copie de travail. À tout le moins, vous devriez assurez-vous que vous ne poussez pas à la actuellement extrait de la branche, mais en général, vous ne devriez pas pousser votre code dans un autre référentiel, vous devez leur demander de retirer de vous.

Dans certains cas, comme lorsque vous êtes en service d'un site web à partir d'un dépôt Git et vous souhaitez mettre à jour le site web, en avançant vers elle, il fait réellement sens pour pousser à l'extrait de branche, mais dans ce cas, vous devez vous assurer que vous avez un crochet installé qui fait les mises à jour de l'extrait de la copie de travail, sinon votre site ne sera jamais mis à jour.

15voto

pluskid Points 143

C’est le même problème que cette question , la solution consiste à utiliser git init --bare ou git clone --bare .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X