Không, dường như không có sự khác biệt nào.
Nó là nhiều hơn để minh họa cho git reset --soft
(tức làchỉ di chuyển HEAD, mà có thể have other more practical uses)
git reset HEAD
là dành cho "unstaging", và đơn giản git reset HEAD^
nào cả (di chuyển HEAD, và unstage, không cần --mixed
, vì nó là tùy chọn mặc định)
Dưới đây là một thử nghiệm nhanh để xem những gì trông giống như:
Trước (bạn chỉ cần chuyển về tính năng, nơi bạn cam kết một "wip
" - công việc cơ bản dở dang):
C:\Users\VonC\prog\git\test\r\r3>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (2 minutes ago) <VonC>
| * fd8d97d - (HEAD, origin/feature, feature) snap WIP (3 minutes ago) <VonC>
| * 16066dd - f1 (3 minutes ago) <VonC>
|/
* e8ad96f - f1 (3 minutes ago) <VonC>
reset bản thân:
C:\Users\VonC\prog\git\test\r\r3>git reset "HEAD^"
Unstaged changes after reset:
M f
Cung cấp cho bạn các trạng thái:
C:\Users\VonC\prog\git\test\r\r3>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: f
#
no changes added to commit (use "git add" and/or "git commit -a")
log sau git reset HEAD^
C:\Users\VonC\prog\git\test\r\r3>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (6 minutes ago) <VonC>
| * fd8d97d - (origin/feature) snap WIP (7 minutes ago) <VonC>
| * 16066dd - (HEAD, feature) f1 (7 minutes ago) <VonC>
|/
* e8ad96f - f1 (8 minutes ago) <VonC>
Trong hai bước, bạn đã có thể nhìn thấy sau khi đăng nhập sau git reset --soft HEAD^
:
C:\Users\VonC\prog\git\test\r\r2>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (65 seconds ago) <VonC>
| * fd8d97d - (origin/feature) snap WIP (89 seconds ago) <VonC>
| * 16066dd - (HEAD, feature) f1 (2 minutes ago) <VonC>
|/
* e8ad96f - f1 (2 minutes ago) <VonC>
Bạn chỉ số vẫn sẽ phản ánh những gì đã được dàn dựng cho wip
:
C:\Users\VonC\prog\git\test\r\r2>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: f
#
reset sau đó sẽ unstaged, mang lại cho bạn trở lại cùng một sân khấu hơn là một git reset HEAD^
sẽ có trong một bước:
C:\Users\VonC\prog\git\test\r\r2>git reset
Unstaged changes after reset:
M f
C:\Users\VonC\prog\git\test\r\r2>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: f
#
no changes added to commit (use "git add" and/or "git commit -a")
Cảm ơn bạn đã xác nhận. Và chắc chắn có những cách sử dụng khác cho git reset --soft. (Trong trường hợp cơ bản nhất, thường không có lý do gì để đặt lại chỉ mục là tốt, trong trường hợp đó --soft sẽ giúp bạn tiết kiệm thời gian để sắp xếp lại các tệp.) Nhưng tốt để biết chắc chắn rằng không cần thiết cho cả hai -stage quá trình nếu bạn đang lập kế hoạch để thiết lập lại chỉ mục là tốt anyway. Tại sao phải nhập nhiều ký tự hơn mức cần thiết? –
@NathanStretch Tôi đồng ý. Nó là nhiều hơn để đưa ra một lựa chọn (trong trường hợp bạn cam kết một công việc đang tiến hành bao gồm các diễn biến cần được dàn dựng và * các diễn biến khác cần được dàn dựng * riêng *: sau đó, bạn unstage mọi thứ, và 'git add' những gì bạn muốn cam kết đầu tiên trong wip của bạn. – VonC