您的位置:首页 > Web前端

Whats the difference between git reset --mixed, --soft, and --hard?

2017-06-22 18:17 525 查看
https://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard

When you modify a file in your repository, the change is initially unstaged. In order to commit it, you must stage it—that is, add it to the index—using
git add
. When you make a commit, the changes that are committed are those that have been added to the index.

git reset
changes, at minimum, where the current branch (
HEAD
) is pointing. The difference between
--mixed
and
--soft
is whether or not your index is also modified. So, if we're on branch
master
with this series of commits:

- A - B - C (master)

HEAD
points to
C
and the index matches
C
.

When we run
git reset --soft B
,
master
(and thus
HEAD
) now points to
B
, but the index still has the changes from
C
;
git status
will show them as staged. So if we run
git commit
at this point, we'll get a new commit with the same changes as
C
.

Okay, so starting from here again:

- A - B - C (master)

Now let's do
git reset --mixed B
. (Note:
--mixed
is the default option). Once again,
master
and
HEAD
point to B, but this time the index is also modified to match
B
. If we run
git commit
at this point, nothing will happen since the index matches
HEAD
. We still have the changes in the working directory, but since they're not in the index,
git status
shows them as unstaged. To commit them, you would
git add
and then commit as usual.

And finally,
--hard
is the same as
--mixed
(it changes your
HEAD
and index), except that
--hard
also modifies your working directory. If we're at
C
and run
git reset --hard B
, then the changes added in
C
, as well as any uncommitted changes you have, will be removed, and the files in your working copy will match commit
B
. Since you can permanently lose changes this way, you should always run
git status
before doing a hard reset to make sure your working directory is clean or that you're okay with losing your uncommitted changes.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: