Git checkout sans écraser les données
Comment pouvez-vous git-checkout
sans écraser les données?
- Je exécuter
git checkout master
- Je obtenir
error: Entry 'forms/answer.php' would be overwritten by merge. Cannot merge.
C'est surprenant, étant donné que je ne savais pas que Git fusionne quand je git-checkout
.
J'ai toujours courir après la commande séparément git merge new-feature
.
Cela semble être apparemment inutile si Git fusionne à la caisse.
Vous devez vous connecter pour publier un commentaire.
Git est un avertissement que vous forms/answers.php a des changements dans votre copie de travail ou d'un indice qui n'ont pas été commis.
Vous pouvez utiliser git-planque pour enregistrer vos modifications, puis git-stash appliquer pour les restaurer.
L'utilisation de git-stash est que vous travaillez sur les changements, mais ensuite il doit temporairement la caisse d'une autre branche pour faire une correction de bug. De sorte que vous pouvez cachette vos modifications dans votre index et votre copie de travail, la caisse de l'autre branche, faire de la correction de bug, de valider, de la caisse de l'origine de la branche, et git-stash appliquer pour restaurer vos modifications et pick-up où vous l'avez laissé.
git-stash
! - Je ne savais pas que son but est d'être utilisé dans les situations comme celle-ci.git checkout -m
) est beaucoup plus facile.Git ne un 2-way merge de uncomitted changements lors de la commutation de branches (à l'aide de
git checkout <branch>
), mais d'habitude il ne fait que du trivial (au niveau de l'arbre) de fusion.Outre
git-stash
solution par Karl Voigtland, vous pouvez donner d'autres options pour git checkout, sélectionnez l'une des options suivantes:Indiquer à git pour essayer plus difficile de fusionner uncomitted changements de la direction générale vous passez avec
-m
/--merge
option. Avec cette option, les trois voies de la fusion entre la direction générale, votre arbre de travail contenu, et la nouvelle branche est fait, et vous serez sur la nouvelle branche.Indiquer à git pour remplacer uncomitted changements de jeter les changements locaux avec
-f
option. Avertissement: uncomitted modifications seront perdues!git checkout -f master
) m'a aidé à revenir. Je ne sais pas quels sont les changements que j'ai perdu, mais ils n'étaient pas important que c'est une très vieille copie d'une mise en pension dont je voulais juste inspecter.git checkout -f
? Fondamentalement, je voudrais Git pour donner de vérifier les fichiers qui seraient à l'origine du conflit.Vous pouvez faire un
git reset --soft
pour faire de votreHEAD
point de la nouvelle branche, mais laisser tous les fichiers (y compris ceux qui ont été modifiés dans la nouvelle succursale). Ensuite, vous pouvez utilisergit checkout
à la caisse seulement les fichiers que vous voulez vraiment de la nouvelle branche.