我也做了以下命令如何在進行本地提交後再次取消我的文件?
git add <foo.java>
git commit -m "add the foo java"
如何刪除我的地方,現在提交,並在foo.java不分級的一種狀態?
如果我輸入git reset --hard
,我發現它會恢復我的修改foo.java到原來的。
我也做了以下命令如何在進行本地提交後再次取消我的文件?
git add <foo.java>
git commit -m "add the foo java"
如何刪除我的地方,現在提交,並在foo.java不分級的一種狀態?
如果我輸入git reset --hard
,我發現它會恢復我的修改foo.java到原來的。
git reset --soft HEAD^
應該做你想做的。在此之後,您將在索引中進行第一次更改(可見於git diff --cached
),並且您的最新更改不會上演。然後git status
看起來就像這樣:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: foo.java
#
# 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: foo.java
#
你可以再做git add foo.java
並立即提交這兩個改變。
git reset --soft
只是爲了它:它就像git reset --hard
,但不接觸文件。
這是我聽到的最容易理解的解釋(僅用11個字)!謝謝! – phreakhead
這個答案是錯誤的。 'git reset'「就像'git reset --hard',但不會觸及這些文件。」不是'git reset --soft'。 'git reset --soft'將會改變這些變化,所以如果你想提交它們,你不需要將它們添加到分級中,但是你必須'重新設置'它們(是的,第二次,沒有' - soft「),以防你不這樣做。所以答案很簡短,但不正確。 –
要我下面總是更可讀(因此更好)的方式來做到這一點:
git reset HEAD~1
在地方1
可以有任意數量的承諾要unstage。
對於unstaging在上次提交的所有文件 -
git reset HEAD~
這兩個變化在哪裏? –
我編輯了答案:「要提交的更改」進行了第一次更改,並且「更改未提交進行提交」進行了第二次更改。 – Antti
在這個答案中描述的實際是'git commit --amend'確實是什麼;但是工作流程要複雜得多。儘管給了一個好的方向('git reset'),但這並不回答OP問的問題。 –