Il y a trois endroits où un fichier, disons, peut-être - l'arbre, l'index et la copie de travail. Lorsque vous ajoutez un fichier dans un dossier, vous l'ajoutez à la copie de travail.
Quand vous faites quelque chose comme git add file
vous l'ajouter à l'index. Et quand vous vous engagez, vous l'ajouter à l'arbre.
Elle ne sera probablement vous aider à connaître les trois plus courantes drapeaux dans git reset:
git reset [--<mode>
] [<commit>
]
Cette forme réinitialise l'actuel chef de la direction générale de <commit>
et éventuellement des mises à jour de l'index (le réinitialiser à l'arbre de l' <commit>
) et l'arbre de travail selon <mode>
, qui doit être l'un des suivants:
--soft
Ne touchez pas le fichier d'index ni de l'arbre de travail (mais réinitialise la tête de <commit>
, comme tous les modes). Cela laisse tous vos fichiers modifiés "Modifications à engagés", comme git status mettrait.
--mixte
Réinitialise l'index, mais pas de l'arbre de travail (c'est à dire, les fichiers modifiés sont conservés mais pas marqué pour la validation) et des rapports de ce qui n'a pas été mis à jour. C'est l'action par défaut.
--hard
Réinitialise l'index et de l'arbre de travail. Toute modification des dossiers dans l'arbre de travail depuis <commit>
sont rejetés.
Maintenant, quand vous faites quelque chose comme git reset HEAD
- ce que vous êtes en train de faire est - git reset HEAD --mixed
et il sera le "reset" de l'indice de l'état où il était avant de commencer à ajouter des fichiers / ajouter des modifications de l'indice ( via git add
) Dans ce cas, la copie de travail et de l'index ( ou de transit ) ont été synchronisés, mais vous avez fait la TÊTE et l'index pour être synchronisé après la réinitialisation.
git rm
sur l'autre main supprime un fichier à partir du répertoire de travail et l'index et que vous vous engagez, le fichier est supprimé de l'arbre. git rm --cached
cependant supprime le fichier d'index seul et la maintient dans votre copie de travail. C'est l'exact opposé de l' git add file
Dans ce cas, vous faites de l'index pour être différente de la TÊTE et du travail, en ce que la TÊTE a engagé précédemment, la version du fichier, la copie de travail a la las modification si l'une ou de la teneur de TÊTE du fichier et que vous avez supprimé le fichier à partir de l'index. Un commit maintenant que la synchronisation de l'index et l'arbre et le fichier sera supprimé.